Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: Source/core/accessibility/AXObject.cpp

Issue 657903004: Accessible scrollToMakeVisible should avoid scrolling if subfocus is visible. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Update test expectations Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « LayoutTests/accessibility/scroll-to-make-visible-nested-2-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
702 // This may be out of range - the calling function should clip this 702 // This may be out of range - the calling function should clip this
703 // to the available range. 703 // to the available range.
704 static int computeBestScrollOffset(int currentScrollOffset, int subfocusMin, int subfocusMax, int objectMin, int objectMax, int viewportMin, int viewportMax) 704 static int computeBestScrollOffset(int currentScrollOffset, int subfocusMin, int subfocusMax, int objectMin, int objectMax, int viewportMin, int viewportMax)
705 { 705 {
706 int viewportSize = viewportMax - viewportMin; 706 int viewportSize = viewportMax - viewportMin;
707 707
708 // If the object size is larger than the viewport size, consider 708 // If the object size is larger than the viewport size, consider
709 // only a portion that's as large as the viewport, centering on 709 // only a portion that's as large as the viewport, centering on
710 // the subfocus as much as possible. 710 // the subfocus as much as possible.
711 if (objectMax - objectMin > viewportSize) { 711 if (objectMax - objectMin > viewportSize) {
712 // Subfocus must be within focus: 712 // Since it's impossible to fit the whole object in the
713 // viewport, exit now if the subfocus is already within the viewport.
714 if (subfocusMin - currentScrollOffset >= viewportMin
715 && subfocusMax - currentScrollOffset <= viewportMax)
716 return currentScrollOffset;
717
718 // Subfocus must be within focus.
713 subfocusMin = std::max(subfocusMin, objectMin); 719 subfocusMin = std::max(subfocusMin, objectMin);
714 subfocusMax = std::min(subfocusMax, objectMax); 720 subfocusMax = std::min(subfocusMax, objectMax);
715 721
716 // Subfocus must be no larger than the viewport size; favor top/left. 722 // Subfocus must be no larger than the viewport size; favor top/left.
717 if (subfocusMax - subfocusMin > viewportSize) 723 if (subfocusMax - subfocusMin > viewportSize)
718 subfocusMax = subfocusMin + viewportSize; 724 subfocusMax = subfocusMin + viewportSize;
719 725
720 // Compute the size of an object centered on the subfocus, the size of t he viewport. 726 // Compute the size of an object centered on the subfocus, the size of t he viewport.
721 int centeredObjectMin = (subfocusMin + subfocusMax - viewportSize) / 2; 727 int centeredObjectMin = (subfocusMin + subfocusMax - viewportSize) / 2;
722 int centeredObjectMax = centeredObjectMin + viewportSize; 728 int centeredObjectMax = centeredObjectMin + viewportSize;
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 return ToggleButtonRole; 924 return ToggleButtonRole;
919 if (ariaHasPopup()) 925 if (ariaHasPopup())
920 return PopUpButtonRole; 926 return PopUpButtonRole;
921 // We don't contemplate RadioButtonRole, as it depends on the input 927 // We don't contemplate RadioButtonRole, as it depends on the input
922 // type. 928 // type.
923 929
924 return ButtonRole; 930 return ButtonRole;
925 } 931 }
926 932
927 } // namespace blink 933 } // namespace blink
OLDNEW
« no previous file with comments | « LayoutTests/accessibility/scroll-to-make-visible-nested-2-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698