WebKit Bugzilla
Attachment 368291 Details for
Bug 197200
: AX: Provide iOS method for setting focus
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch
patch (text/plain), 5.28 KB, created by
chris fleizach
on 2019-04-25 17:20:03 PDT
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
chris fleizach
Created:
2019-04-25 17:20:03 PDT
Size:
5.28 KB
patch
obsolete
>Index: Source/WebCore/ChangeLog >=================================================================== >--- Source/WebCore/ChangeLog (revision 244669) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,22 @@ >+2019-04-25 Chris Fleizach <cfleizach@apple.com> >+ >+ AX: Provide iOS method for setting focus >+ https://bugs.webkit.org/show_bug.cgi?id=197200 >+ <rdar://problem/50131679> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Put the focus setting code in a place that iOS and macOS can access. >+ Override a platform level method for setting focus on iOS. >+ >+ * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm: >+ (-[WebAccessibilityObjectWrapper _accessibilitySetFocus:]): >+ * accessibility/mac/WebAccessibilityObjectWrapperBase.h: >+ * accessibility/mac/WebAccessibilityObjectWrapperBase.mm: >+ (-[WebAccessibilityObjectWrapperBase baseAccessibilitySetFocus:]): >+ * accessibility/mac/WebAccessibilityObjectWrapperMac.mm: >+ (-[WebAccessibilityObjectWrapper _accessibilitySetValue:forAttribute:]): >+ > 2019-04-25 Timothy Hatcher <timothy@apple.com> > > Disable ContentChangeObserver on iOSMac. >Index: Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm >=================================================================== >--- Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (revision 244669) >+++ Source/WebCore/accessibility/ios/WebAccessibilityObjectWrapperIOS.mm (working copy) >@@ -2007,6 +2007,11 @@ > [self accessibilityModifySelection:granularity increase:YES]; > } > >+- (void)_accessibilitySetFocus:(BOOL)focus >+{ >+ [self baseAccessibilitySetFocus:focus]; >+} >+ > - (void)accessibilityDecreaseSelection:(TextGranularity)granularity > { > [self accessibilityModifySelection:granularity increase:NO]; >Index: Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h >=================================================================== >--- Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h (revision 244669) >+++ Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.h (working copy) >@@ -81,6 +81,7 @@ > - (NSString *)baseAccessibilityHelpText; > - (NSArray<NSString *> *)baseAccessibilitySpeechHint; > >+- (void)baseAccessibilitySetFocus:(BOOL)focus; > - (NSString *)ariaLandmarkRoleDescription; > > - (id)attachmentView; >Index: Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm >=================================================================== >--- Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm (revision 244669) >+++ Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm (working copy) >@@ -571,6 +571,27 @@ > } > } > >+- (void)baseAccessibilitySetFocus:(BOOL)focus >+{ >+ // If focus is just set without making the view the first responder, then keyboard focus won't move to the right place. >+ if (focus && !m_object->document()->frame()->selection().isFocusedAndActive()) { >+ FrameView* frameView = m_object->documentFrameView(); >+ Page* page = m_object->page(); >+ if (page && frameView) { >+ ChromeClient& chromeClient = page->chrome().client(); >+ chromeClient.focus(); >+ >+ // Legacy WebKit1 case. >+ if (frameView->platformWidget()) >+ chromeClient.makeFirstResponder(frameView->platformWidget()); >+ else >+ chromeClient.assistiveTechnologyMakeFirstResponder(); >+ } >+ } >+ >+ m_object->setFocused(focus); >+} >+ > - (NSString *)accessibilityPlatformMathSubscriptKey > { > ASSERT_NOT_REACHED(); >Index: Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm >=================================================================== >--- Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (revision 244669) >+++ Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm (working copy) >@@ -3871,27 +3871,7 @@ > ASSERT(textMarkerRange); > m_object->setSelectedVisiblePositionRange([self visiblePositionRangeForTextMarkerRange:textMarkerRange]); > } else if ([attributeName isEqualToString: NSAccessibilityFocusedAttribute]) { >- ASSERT(number); >- >- bool focus = [number boolValue]; >- >- // If focus is just set without making the view the first responder, then keyboard focus won't move to the right place. >- if (focus && !m_object->document()->frame()->selection().isFocusedAndActive()) { >- FrameView* frameView = m_object->documentFrameView(); >- Page* page = m_object->page(); >- if (page && frameView) { >- ChromeClient& chromeClient = page->chrome().client(); >- chromeClient.focus(); >- >- // Legacy WebKit1 case. >- if (frameView->platformWidget()) >- chromeClient.makeFirstResponder(frameView->platformWidget()); >- else >- chromeClient.assistiveTechnologyMakeFirstResponder(); >- } >- } >- >- m_object->setFocused(focus); >+ [self baseAccessibilitySetFocus:[number boolValue]]; > } else if ([attributeName isEqualToString: NSAccessibilityValueAttribute]) { > if (number && m_object->canSetNumericValue()) > m_object->setValue([number floatValue]);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197200
:
368037
| 368291