RESOLVED FIXED 34464
[Chromium] Chromium should receive checkbox state changes
https://bugs.webkit.org/show_bug.cgi?id=34464
Summary [Chromium] Chromium should receive checkbox state changes
Chris Guillory
Reported 2010-02-01 21:02:30 PST
Ensure that chromium gets notified of AXCheckedStateChanged events so it can send the MSAA event EVENT_OBJECT_STATECHANGE.
Attachments
[Chromium] Notify Chromium of state change notifications. (7.19 KB, patch)
2010-02-02 09:40 PST, Chris Guillory
no flags
Notify Chromium of state change notifications. (23.22 KB, patch)
2010-02-02 09:56 PST, Chris Guillory
fishd: review-
Patch updated with comments from Darin (7.29 KB, patch)
2010-02-03 12:29 PST, Chris Guillory
no flags
Fixing style - line endings. (7.25 KB, patch)
2010-02-03 13:13 PST, Chris Guillory
fishd: review-
Updated with more comments from Darin (6.96 KB, patch)
2010-02-04 11:22 PST, Chris Guillory
no flags
Removed unneeded AXObjectCache:: (6.96 KB, patch)
2010-02-04 12:10 PST, Chris Guillory
eric: review-
fishd: commit-queue-
Added the !obj->document() to fix debug ASSERTS (7.00 KB, patch)
2010-02-08 16:18 PST, Chris Guillory
no flags
Chris Guillory
Comment 1 2010-02-02 09:40:30 PST
Created attachment 47942 [details] [Chromium] Notify Chromium of state change notifications.
WebKit Review Bot
Comment 2 2010-02-02 09:45:33 PST
Attachment 47942 [details] did not pass style-queue: Failed to run "WebKitTools/Scripts/check-webkit-style" exit_code: 1 WebCore/platform/chromium/ChromiumBridge.h:53: Code inside a namespace should not be indented. [whitespace/indent] [4] Total errors found: 1 If any of these errors are false positives, please file a bug against check-webkit-style.
Chris Guillory
Comment 3 2010-02-02 09:56:25 PST
Created attachment 47945 [details] Notify Chromium of state change notifications. Code in WebKit\WebCore\platform\chromium\ChromiumBridge.h was indented inside of a namespace.
Chris Guillory
Comment 4 2010-02-02 11:52:55 PST
This change needs to be committed with a parallel change in Chromium. As I understand it this should NOT be added to the commit-queue as both changes are needed.
Darin Fisher (:fishd, Google)
Comment 5 2010-02-02 22:30:44 PST
(In reply to comment #4) > This change needs to be committed with a parallel change in Chromium. As I > understand it this should NOT be added to the commit-queue as both changes are > needed. Hi Chris, Is it possible to break this change up into two parts so that you can avoid the need for a two-sided patch landing? Generally speaking, we try to preserve the old API while introducing the new side-by-side. Then, once Chromium adopts the new API, we can go back to WebKit and remove the old API. Is that possible in this case?
Darin Fisher (:fishd, Google)
Comment 6 2010-02-02 22:45:49 PST
Comment on attachment 47945 [details] Notify Chromium of state change notifications. > Index: WebCore/ChangeLog > + [Chromium] Notify ChromiumBridge of state change notifications. > + Bug: https://bugs.webkit.org/show_bug.cgi?id=34464 nit: people generally do not add the "Bug: " label like that. Just the URL is enough. > + > + No new tests needed. Added virtual function with empty default implementation. > + > + * Makefile: ^^^ This patch doesn't seem to include any changes to Makefile > + * accessibility/chromium/AXObjectCacheChromium.cpp: > + (WebCore::AXObjectCache::postPlatformNotification): > + * platform/chromium/ChromiumBridge.h: ^^^ This ChangeLog seems inconsistent with the patch. > Index: WebCore/accessibility/chromium/AXObjectCacheChromium.cpp ... > -void AXObjectCache::postPlatformNotification(AccessibilityObject*, AXNotification) > +void AXObjectCache::postPlatformNotification(AccessibilityObject* obj, AXNotification notification) > { > + ChromiumBridge::postPlatformNotification(obj, notification); Since your implementation of this ChromiumBridge method involves simply calling back up to the WebViewClient, I think it would be better to put that code here and skip defining a new ChromiumBridge method. I would consider adding a method to ChromeClientChromium for this. I also think that it should have a more descriptive name than postPlatformNotification. "changeStateAccessibilityObject" sounds a bit awkward to me. How about didChangeAccessibilityObjectState? In general, ChromiumBridge methods should only exist to help with the implementation of code under WebCore/platform. (There are numerous exceptions that violate this rule and should be cleaned up.) For example, if you find yourself dealing with Document or Frame in ChromiumBridge, then you know it is the wrong place for the code.
Chris Guillory
Comment 7 2010-02-03 11:20:07 PST
Hi Darin, Thanks for the review. I believe I incorrectly stated that this change required two-sided patch landing. It should just require one change in WebKit followed by one change in Chromium. Chromium will build fine with just the change in WebKit since the virtual method added to WebViewClient provides a default implementation. I've moved the new function from ChromiumBridge to ChromeClientChromium and given it a better name. I'll send out the new patch.
Chris Guillory
Comment 8 2010-02-03 12:29:59 PST
Created attachment 48059 [details] Patch updated with comments from Darin
WebKit Review Bot
Comment 9 2010-02-03 12:33:46 PST
Attachment 48059 [details] did not pass style-queue: Failed to run "WebKitTools/Scripts/check-webkit-style" exit_code: 1 WebKit/chromium/src/ChromeClientImpl.cpp:662: One or more unexpected \r (^M) found; better to use only a \n [whitespace/carriage_return] [1] Suppressing further [whitespace/carriage_return] reports for this file. WebCore/accessibility/chromium/AXObjectCacheChromium.cpp:30: One or more unexpected \r (^M) found; better to use only a \n [whitespace/carriage_return] [1] Suppressing further [whitespace/carriage_return] reports for this file. Total errors found: 27 If any of these errors are false positives, please file a bug against check-webkit-style.
Chris Guillory
Comment 10 2010-02-03 13:13:01 PST
Created attachment 48063 [details] Fixing style - line endings.
Darin Fisher (:fishd, Google)
Comment 11 2010-02-03 22:55:32 PST
Comment on attachment 48063 [details] Fixing style - line endings. > Index: WebCore/ChangeLog ... > + > + No new tests. ^^^ please delete the line that says "No new tests." That is in the template to provide a suggestion to you that you should consider creating new tests :-) (For this change, I don't think a new test is needed.) > Index: WebCore/accessibility/chromium/AXObjectCacheChromium.cpp > +static ChromeClientChromium* toChromeClientChromium(Widget* widget) This function should be changed to take a FrameView* as a parameter. Then you can avoid having to check if the widget is a FrameView :-) > Index: WebKit/chromium/public/WebViewClient.h ... > + // Notifies embedder that the state of an accessibility object has changed. > + virtual void accessibilityObjectStateDidChange(const WebAccessibilityObject&) { } I previously suggested didChangeAccessibilityObjectState to match the naming conventions of other methods found in WebViewClient.h. Unless you feel strongly about this, I think we should go with that instead (for consistency).
Chris Guillory
Comment 12 2010-02-04 11:22:46 PST
Created attachment 48157 [details] Updated with more comments from Darin Removed no new tests. toChromeClientChromium now takes a FrameView*. :) I don't feel strongly about the name. Changed to didChangeAccessibilityObjectState.
Darin Fisher (:fishd, Google)
Comment 13 2010-02-04 11:40:06 PST
Comment on attachment 48157 [details] Updated with more comments from Darin > Index: WebCore/accessibility/chromium/AXObjectCacheChromium.cpp ... > +void AXObjectCache::postPlatformNotification(AccessibilityObject* obj, AXNotification notification) > { > + if (!obj || !obj->documentFrameView() || notification != AXObjectCache::AXCheckedStateChanged) nit: since you are within the namespace of AXObjectCache, there is no need to use AXObjectCache:: otherwise, r=me
Chris Guillory
Comment 14 2010-02-04 12:10:54 PST
Created attachment 48159 [details] Removed unneeded AXObjectCache:: Fixed the copy paste error.
Darin Fisher (:fishd, Google)
Comment 15 2010-02-04 12:17:11 PST
Darin Fisher (:fishd, Google)
Comment 16 2010-02-04 12:17:58 PST
Comment on attachment 48159 [details] Removed unneeded AXObjectCache:: Thanks for updating the patch. I actually made the change locally and committed. Same result :-)
Dimitri Glazkov (Google)
Comment 17 2010-02-06 12:18:59 PST
Dimitri Glazkov (Google)
Comment 18 2010-02-06 12:20:52 PST
Rolled out, because it introduced ASSERTs. Needs more lovin'.
Eric Seidel (no email)
Comment 19 2010-02-08 15:12:49 PST
Comment on attachment 48157 [details] Updated with more comments from Darin Cleared Darin Fisher's review+ from obsolete attachment 48157 [details] so that this bug does not appear in http://webkit.org/pending-commit.
Eric Seidel (no email)
Comment 20 2010-02-08 15:28:56 PST
Comment on attachment 48159 [details] Removed unneeded AXObjectCache:: Looks like this got rolled out? Marking r-.
Chris Guillory
Comment 21 2010-02-08 16:18:09 PST
Created attachment 48374 [details] Added the !obj->document() to fix debug ASSERTS Verified by running chromium webkit layout tests in debug mode.
WebKit Commit Bot
Comment 22 2010-02-09 20:01:54 PST
Comment on attachment 48374 [details] Added the !obj->document() to fix debug ASSERTS Clearing flags on attachment: 48374 Committed r54584: <http://trac.webkit.org/changeset/54584>
WebKit Commit Bot
Comment 23 2010-02-09 20:02:07 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.