Changeset 140974 in webkit
- Timestamp:
- Jan 28, 2013 9:05:59 AM (11 years ago)
- Location:
- trunk
- Files:
-
- 1 deleted
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r140972 r140974 1 2013-01-28 James Craig <james@cookiecrook.com> 2 3 HTML5 promotes DL from specific 'definition list' to superset 'description list'; accessibility strings and accessors should be updated to match. 4 https://bugs.webkit.org/show_bug.cgi?id=107650 5 6 Reviewed by Chris Fleizach. 7 8 Updating accessibility strings and accessors for DL/DT/DD; new one for [role="definition"] (previously it reused the role/desc for DD). 9 Removed gtk expectation as the expectation has changed: platform/gtk/accessibility/lists-expected.txt 10 11 * accessibility/lists.html: 12 * platform/gtk/accessibility/lists-expected.txt: Removed. 13 * platform/mac/accessibility/definition-list-term-expected.txt: 14 * platform/mac/accessibility/definition-list-term.html: 15 * platform/mac/accessibility/lists-expected.txt: 16 1 17 2013-01-28 Ádám Kallai <kadam@inf.u-szeged.hu> 2 18 -
trunk/LayoutTests/accessibility/lists.html
r120111 r140974 1 <!DOCTYPE html> 1 2 <html> 2 3 <script> -
trunk/LayoutTests/platform/mac/accessibility/definition-list-term-expected.txt
r51670 r140974 11 11 PASS obj.childAtIndex(0).roleDescription is "AXRoleDescription: term" 12 12 PASS obj.childAtIndex(1).role is 'AXRole: AXGroup' 13 PASS obj.childAtIndex(1).subrole is "AXSubrole: AXDe finition"14 PASS obj.childAtIndex(1).roleDescription is "AXRoleDescription: de finition"13 PASS obj.childAtIndex(1).subrole is "AXSubrole: AXDescription" 14 PASS obj.childAtIndex(1).roleDescription is "AXRoleDescription: description" 15 15 PASS obj.childAtIndex(1).role is 'AXRole: AXGroup' 16 PASS obj.childAtIndex(1).subrole is "AXSubrole: AXDe finition"17 PASS obj.childAtIndex(1).roleDescription is "AXRoleDescription: de finition"16 PASS obj.childAtIndex(1).subrole is "AXSubrole: AXDescription" 17 PASS obj.childAtIndex(1).roleDescription is "AXRoleDescription: description" 18 18 PASS successfullyParsed is true 19 19 -
trunk/LayoutTests/platform/mac/accessibility/definition-list-term.html
r99258 r140974 29 29 30 30 shouldBe("obj.childAtIndex(1).role", "'AXRole: AXGroup'"); 31 shouldBe("obj.childAtIndex(1).subrole", '"AXSubrole: AXDe finition"');32 shouldBe("obj.childAtIndex(1).roleDescription", '"AXRoleDescription: de finition"');31 shouldBe("obj.childAtIndex(1).subrole", '"AXSubrole: AXDescription"'); 32 shouldBe("obj.childAtIndex(1).roleDescription", '"AXRoleDescription: description"'); 33 33 34 34 shouldBe("obj.childAtIndex(1).role", "'AXRole: AXGroup'"); 35 shouldBe("obj.childAtIndex(1).subrole", '"AXSubrole: AXDe finition"');36 shouldBe("obj.childAtIndex(1).roleDescription", '"AXRoleDescription: de finition"');35 shouldBe("obj.childAtIndex(1).subrole", '"AXSubrole: AXDescription"'); 36 shouldBe("obj.childAtIndex(1).roleDescription", '"AXRoleDescription: description"'); 37 37 } 38 38 -
trunk/LayoutTests/platform/mac/accessibility/lists-expected.txt
r137484 r140974 69 69 ------------ 70 70 AXRole: AXList 71 AXSubrole: AXDe finitionList72 AXRoleDescription: definitionlist71 AXSubrole: AXDescriptionList 72 AXRoleDescription: list 73 73 AXChildren: <array of size 5> 74 74 AXHelp: … … 277 277 ------------ 278 278 AXRole: AXGroup 279 AXSubrole: AXDe finition280 AXRoleDescription: de finition279 AXSubrole: AXDescription 280 AXRoleDescription: description 281 281 AXChildren: <array of size 1> 282 282 AXHelp: … … 325 325 ------------ 326 326 AXRole: AXGroup 327 AXSubrole: AXDe finition328 AXRoleDescription: de finition329 AXChildren: <array of size 1> 330 AXHelp: 331 AXParent: <AXGroup> 332 AXSize: NSSize: {729, 18} 333 AXTitle: 334 AXDescription: 335 AXValue: 336 AXFocused: 0 337 AXEnabled: 1 338 AXWindow: <AXGroup> 339 AXSelectedTextMarkerRange: (null) 340 AXStartTextMarker: <AXGroup> 341 AXEndTextMarker: <AXGroup> 342 AXVisited: 0 343 AXLinkedUIElements: (null) 344 AXSelected: 0 345 AXBlockQuoteLevel: 0 346 AXTopLevelUIElement: <AXGroup> 347 AXARIABusy: 0 348 349 ------------ 350 AXRole: AXGroup 351 AXSubrole: AXDe finition352 AXRoleDescription: de finition353 AXChildren: <array of size 1> 354 AXHelp: 355 AXParent: <AXGroup> 356 AXSize: NSSize: {729, 18} 357 AXTitle: 358 AXDescription: 359 AXValue: 360 AXFocused: 0 361 AXEnabled: 1 362 AXWindow: <AXGroup> 363 AXSelectedTextMarkerRange: (null) 364 AXStartTextMarker: <AXGroup> 365 AXEndTextMarker: <AXGroup> 366 AXVisited: 0 367 AXLinkedUIElements: (null) 368 AXSelected: 0 369 AXBlockQuoteLevel: 0 370 AXTopLevelUIElement: <AXGroup> 371 AXARIABusy: 0 372 373 ------------ 374 375 376 327 AXSubrole: AXDescription 328 AXRoleDescription: description 329 AXChildren: <array of size 1> 330 AXHelp: 331 AXParent: <AXGroup> 332 AXSize: NSSize: {729, 18} 333 AXTitle: 334 AXDescription: 335 AXValue: 336 AXFocused: 0 337 AXEnabled: 1 338 AXWindow: <AXGroup> 339 AXSelectedTextMarkerRange: (null) 340 AXStartTextMarker: <AXGroup> 341 AXEndTextMarker: <AXGroup> 342 AXVisited: 0 343 AXLinkedUIElements: (null) 344 AXSelected: 0 345 AXBlockQuoteLevel: 0 346 AXTopLevelUIElement: <AXGroup> 347 AXARIABusy: 0 348 349 ------------ 350 AXRole: AXGroup 351 AXSubrole: AXDescription 352 AXRoleDescription: description 353 AXChildren: <array of size 1> 354 AXHelp: 355 AXParent: <AXGroup> 356 AXSize: NSSize: {729, 18} 357 AXTitle: 358 AXDescription: 359 AXValue: 360 AXFocused: 0 361 AXEnabled: 1 362 AXWindow: <AXGroup> 363 AXSelectedTextMarkerRange: (null) 364 AXStartTextMarker: <AXGroup> 365 AXEndTextMarker: <AXGroup> 366 AXVisited: 0 367 AXLinkedUIElements: (null) 368 AXSelected: 0 369 AXBlockQuoteLevel: 0 370 AXTopLevelUIElement: <AXGroup> 371 AXARIABusy: 0 372 373 ------------ 374 375 376 -
trunk/Source/WebCore/ChangeLog
r140968 r140974 1 2013-01-28 James Craig <james@cookiecrook.com> 2 3 HTML5 promotes DL from specific 'definition list' to superset 'description list'; accessibility strings and accessors should be updated to match. 4 https://bugs.webkit.org/show_bug.cgi?id=107650 5 6 Reviewed by Chris Fleizach. 7 8 Updating accessibility strings and accessors for DL/DT/DD; new one for [role="definition"] (previously it reused the role/desc for DD). 9 10 Test: platform/mac/accessibility/definition-list-term.html: 11 Test: accessibility/lists.html 12 13 * English.lproj/Localizable.strings: 14 * accessibility/AccessibilityList.cpp: 15 (WebCore::AccessibilityList::isDescriptionList): 16 * accessibility/AccessibilityList.h: 17 (AccessibilityList): 18 * accessibility/AccessibilityObject.cpp: 19 (WebCore::createARIARoleMap): 20 * accessibility/AccessibilityObject.h: 21 * accessibility/AccessibilityRenderObject.cpp: 22 (WebCore::AccessibilityRenderObject::determineAccessibilityRole): 23 * accessibility/mac/WebAccessibilityObjectWrapper.mm: 24 (createAccessibilityRoleMap): 25 (-[WebAccessibilityObjectWrapper subrole]): 26 (-[WebAccessibilityObjectWrapper roleDescription]): 27 * platform/LocalizedStrings.cpp: 28 (WebCore::AXDefinitionText): 29 (WebCore::AXDescriptionListTermText): 30 (WebCore): 31 (WebCore::AXDescriptionListDetailText): 32 * platform/LocalizedStrings.h: 33 (WebCore): 34 * platform/blackberry/LocalizedStringsBlackBerry.cpp: 35 (WebCore::AXDefinitionText): 36 (WebCore::AXDescriptionListDetailText): 37 (WebCore): 38 (WebCore::AXDescriptionListTermText): 39 * platform/efl/LocalizedStringsEfl.cpp: 40 (WebCore::AXDefinitionText): 41 (WebCore): 42 (WebCore::AXDescriptionListTermText): 43 (WebCore::AXDescriptionListDetailText): 44 * platform/gtk/LocalizedStringsGtk.cpp: 45 (WebCore::AXDefinitionText): 46 (WebCore): 47 (WebCore::AXDescriptionListTermText): 48 (WebCore::AXDescriptionListDetailText): 49 * platform/qt/LocalizedStringsQt.cpp: 50 (WebCore::AXDefinitionText): 51 (WebCore::AXDescriptionListTermText): 52 (WebCore): 53 (WebCore::AXDescriptionListDetailText): 54 1 55 2013-01-28 Vladislav Kaznacheev <kaznacheev@chromium.org> 2 56 -
trunk/Source/WebCore/English.lproj/Localizable.strings
r138860 r140974 611 611 "current movie time in seconds" = "current movie time in seconds"; 612 612 613 /* definition phrase*/613 /* definition detail */ 614 614 "definition" = "definition"; 615 616 /* description detail */ 617 "description" = "description"; 615 618 616 619 /* An ARIA accessibility group that acts as an dialog. */ -
trunk/Source/WebCore/accessibility/AccessibilityList.cpp
r140658 r140974 99 99 } 100 100 101 bool AccessibilityList::isDe finitionList() const101 bool AccessibilityList::isDescriptionList() const 102 102 { 103 103 if (!m_renderer) -
trunk/Source/WebCore/accessibility/AccessibilityList.h
r124582 r140974 51 51 bool isUnorderedList() const; 52 52 bool isOrderedList() const; 53 bool isDe finitionList() const;53 bool isDescriptionList() const; 54 54 55 55 virtual AccessibilityRole roleValue() const { return ListRole; } -
trunk/Source/WebCore/accessibility/AccessibilityObject.cpp
r138701 r140974 1394 1394 { "columnheader", ColumnHeaderRole }, 1395 1395 { "combobox", ComboBoxRole }, 1396 { "definition", Definition ListDefinitionRole },1396 { "definition", DefinitionRole }, 1397 1397 { "document", DocumentRole }, 1398 1398 { "rowheader", RowHeaderRole }, -
trunk/Source/WebCore/accessibility/AccessibilityObject.h
r140658 r140974 112 112 ColumnHeaderRole, 113 113 ComboBoxRole, 114 DefinitionListTermRole, 115 DefinitionListDefinitionRole, 114 DefinitionRole, 115 DescriptionListTermRole, 116 DescriptionListDetailRole, 116 117 DirectoryRole, 117 118 DisclosureTriangleRole, -
trunk/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
r140658 r140974 2498 2498 2499 2499 if (node && node->hasTagName(ddTag)) 2500 return De finitionListDefinitionRole;2500 return DescriptionListDetailRole; 2501 2501 2502 2502 if (node && node->hasTagName(dtTag)) 2503 return De finitionListTermRole;2503 return DescriptionListTermRole; 2504 2504 2505 2505 if (node && (node->hasTagName(rpTag) || node->hasTagName(rtTag))) -
trunk/Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm
r139663 r140974 112 112 #endif 113 113 114 #ifndef NSAccessibilityDe finitionListSubrole115 #define NSAccessibilityDe finitionListSubrole @"AXDefinitionList"114 #ifndef NSAccessibilityDescriptionListSubrole 115 #define NSAccessibilityDescriptionListSubrole @"AXDescriptionList" 116 116 #endif 117 117 … … 1601 1601 { TableHeaderContainerRole, NSAccessibilityGroupRole }, 1602 1602 { RowHeaderRole, NSAccessibilityGroupRole }, 1603 { DefinitionListDefinitionRole, NSAccessibilityGroupRole }, 1604 { DefinitionListTermRole, NSAccessibilityGroupRole }, 1603 { DefinitionRole, NSAccessibilityGroupRole }, 1604 { DescriptionListDetailRole, NSAccessibilityGroupRole }, 1605 { DescriptionListTermRole, NSAccessibilityGroupRole }, 1605 1606 { SliderThumbRole, NSAccessibilityValueIndicatorRole }, 1606 1607 { LandmarkApplicationRole, NSAccessibilityGroupRole }, … … 1701 1702 if (listObject->isUnorderedList() || listObject->isOrderedList()) 1702 1703 return NSAccessibilityContentListSubrole; 1703 if (listObject->isDe finitionList())1704 return NSAccessibilityDe finitionListSubrole;1704 if (listObject->isDescriptionList()) 1705 return NSAccessibilityDescriptionListSubrole; 1705 1706 } 1706 1707 … … 1751 1752 case TabPanelRole: 1752 1753 return @"AXTabPanel"; 1753 case DefinitionListTermRole: 1754 case DefinitionRole: 1755 return @"AXDefinition"; 1756 case DescriptionListTermRole: 1754 1757 return @"AXTerm"; 1755 case De finitionListDefinitionRole:1756 return @"AXDe finition";1758 case DescriptionListDetailRole: 1759 return @"AXDescription"; 1757 1760 // Default doesn't return anything, so roles defined below can be chosen. 1758 1761 default: … … 1858 1861 case TabPanelRole: 1859 1862 return AXARIAContentGroupText(@"ARIATabPanel"); 1860 case DefinitionListTermRole: 1861 return AXDefinitionListTermText(); 1862 case DefinitionListDefinitionRole: 1863 return AXDefinitionListDefinitionText(); 1863 case DefinitionRole: 1864 return AXDefinitionText(); 1865 case DescriptionListTermRole: 1866 return AXDescriptionListTermText(); 1867 case DescriptionListDetailRole: 1868 return AXDescriptionListDetailText(); 1864 1869 case FooterRole: 1865 1870 return AXFooterRoleDescriptionText(); -
trunk/Source/WebCore/platform/LocalizedStrings.cpp
r138860 r140974 558 558 } 559 559 560 String AXDefinitionListTermText() 561 { 562 return WEB_UI_STRING("term", "term word of a definition"); 563 } 564 565 String AXDefinitionListDefinitionText() 566 { 567 return WEB_UI_STRING("definition", "definition phrase"); 560 String AXDefinitionText() 561 { 562 return WEB_UI_STRING("definition", "role description of ARIA definition role"); 563 } 564 565 String AXDescriptionListTermText() 566 { 567 return WEB_UI_STRING("term", "term word of a description list"); 568 } 569 570 String AXDescriptionListDetailText() 571 { 572 return WEB_UI_STRING("description", "description detail"); 568 573 } 569 574 -
trunk/Source/WebCore/platform/LocalizedStrings.h
r138071 r140974 153 153 String AXImageMapText(); 154 154 String AXHeadingText(); 155 String AXDefinitionListTermText(); 156 String AXDefinitionListDefinitionText(); 155 String AXDefinitionText(); 156 String AXDescriptionListTermText(); 157 String AXDescriptionListDetailText(); 157 158 String AXFooterRoleDescriptionText(); 158 159 String AXFileUploadButtonText(); -
trunk/Source/WebCore/platform/blackberry/LocalizedStringsBlackBerry.cpp
r135836 r140974 389 389 } 390 390 391 String AXDefinitionListDefinitionText() 392 { 393 notImplemented(); 394 return String(); 395 } 396 397 String AXDefinitionListTermText() 391 String AXDefinitionText() 392 { 393 notImplemented(); 394 return String(); 395 } 396 397 String AXDescriptionListDetailText() 398 { 399 notImplemented(); 400 return String(); 401 } 402 403 String AXDescriptionListTermText() 398 404 { 399 405 notImplemented(); -
trunk/Source/WebCore/platform/efl/LocalizedStringsEfl.cpp
r140419 r140974 370 370 } 371 371 372 String AXDefinitionListTermText() 372 String AXDefinitionText() 373 { 374 return String::fromUTF8("definition"); 375 } 376 377 String AXDescriptionListTermText() 373 378 { 374 379 return String::fromUTF8("term"); 375 380 } 376 381 377 String AXDe finitionListDefinitionText()378 { 379 return String::fromUTF8("de finition");382 String AXDescriptionListDetailText() 383 { 384 return String::fromUTF8("description"); 380 385 } 381 386 -
trunk/Source/WebCore/platform/gtk/LocalizedStringsGtk.cpp
r138204 r140974 408 408 } 409 409 410 String AXDefinitionListTermText() 410 String AXDefinitionText() 411 { 412 return String::fromUTF8(_("definition")); 413 } 414 415 String AXDescriptionListTermText() 411 416 { 412 417 return String::fromUTF8(_("term")); 413 418 } 414 419 415 String AXDe finitionListDefinitionText()416 { 417 return String::fromUTF8(_("de finition"));420 String AXDescriptionListDetailText() 421 { 422 return String::fromUTF8(_("description")); 418 423 } 419 424 -
trunk/Source/WebCore/platform/qt/LocalizedStringsQt.cpp
r135836 r140974 380 380 } 381 381 382 String AXDefinitionListTermText() 383 { 384 notImplemented(); 385 return String(); 386 } 387 388 String AXDefinitionListDefinitionText() 382 String AXDefinitionText() 383 { 384 notImplemented(); 385 return String(); 386 } 387 388 String AXDescriptionListTermText() 389 { 390 notImplemented(); 391 return String(); 392 } 393 394 String AXDescriptionListDetailText() 389 395 { 390 396 notImplemented(); -
trunk/Source/WebKit/chromium/ChangeLog
r140971 r140974 1 2013-01-28 James Craig <james@cookiecrook.com> 2 3 HTML5 promotes DL from specific 'definition list' to superset 'description list'; accessibility strings and accessors should be updated to match. 4 https://bugs.webkit.org/show_bug.cgi?id=107650 5 6 Reviewed by Chris Fleizach. 7 8 Updating accessibility strings and accessors for DL/DT/DD; new one for [role="definition"] (previously it reused the role/desc for DD). 9 10 * public/WebAccessibilityRole.h: 11 * src/AssertMatchingEnums.cpp: 12 * src/LocalizedStrings.cpp: 13 (WebCore::AXDefinitionText): 14 (WebCore): 15 (WebCore::AXDescriptionListTermText): 16 (WebCore::AXDescriptionListDetailText): 17 1 18 2013-01-28 Mike West <mkwst@chromium.org> 2 19 -
trunk/Source/WebKit/chromium/public/WebAccessibilityRole.h
r140621 r140974 57 57 WebAccessibilityRoleColumnHeader, 58 58 WebAccessibilityRoleComboBox, 59 WebAccessibilityRoleDefinitionListTerm, 60 WebAccessibilityRoleDefinitionListDefinition, 59 WebAccessibilityRoleDefinition, 60 WebAccessibilityRoleDescriptionListTerm, 61 WebAccessibilityRoleDescriptionListDetail, 61 62 WebAccessibilityRoleDirectory, 62 63 WebAccessibilityRoleDisclosureTriangle, -
trunk/Source/WebKit/chromium/src/AssertMatchingEnums.cpp
r140971 r140974 222 222 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleMenuListPopup, MenuListPopupRole); 223 223 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleTableHeaderContainer, TableHeaderContainerRole); 224 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDefinitionListTerm, DefinitionListTermRole); 225 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDefinitionListDefinition, DefinitionListDefinitionRole); 224 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDefinition, DefinitionRole); 225 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDescriptionListTerm, DescriptionListTermRole); 226 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleDescriptionListDetail, DescriptionListDetailRole); 226 227 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleAnnotation, AnnotationRole); 227 228 COMPILE_ASSERT_MATCHING_ENUM(WebAccessibilityRoleSliderThumb, SliderThumbRole); -
trunk/Source/WebKit/chromium/src/LocalizedStrings.cpp
r138680 r140974 146 146 } 147 147 148 String AXDefinitionListTermText() 148 String AXDefinitionText() 149 { 150 notImplemented(); 151 return String("definition"); 152 } 153 154 String AXDescriptionListTermText() 149 155 { 150 156 notImplemented(); … … 152 158 } 153 159 154 String AXDe finitionListDefinitionText()155 { 156 notImplemented(); 157 return String("de finition");160 String AXDescriptionListDetailText() 161 { 162 notImplemented(); 163 return String("description"); 158 164 } 159 165 -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities.js
r93259 r140974 24 24 */ 25 25 26 function createDe finitionList(items) {26 function createDescriptionList(items) { 27 27 var list = document.createElement('dl'); 28 28 items.forEach(function(pair) { -
trunk/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js
r120669 r140974 177 177 if (passingBuildName) 178 178 dlItems.push([document.createTextNode('Passed'), this._domForBuildName(builder, passingBuildName)]); 179 result.appendChild(createDe finitionList(dlItems));179 result.appendChild(createDescriptionList(dlItems)); 180 180 181 181 if (!passingBuildName) -
trunk/Tools/ChangeLog
r140970 r140974 1 2013-01-28 James Craig <james@cookiecrook.com> 2 3 HTML5 promotes DL from specific 'definition list' to superset 'description list'; accessibility strings and accessors should be updated to match. 4 https://bugs.webkit.org/show_bug.cgi?id=107650 5 6 Reviewed by Chris Fleizach. 7 8 Updating accessibility strings and accessors for DL/DT/DD. 9 10 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities.js: 11 (createDescriptionList): 12 * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js: 13 * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp: 14 1 15 2013-01-28 Manuel Rego Casasnovas <rego@igalia.com> 2 16 -
trunk/Tools/DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp
r140565 r140974 170 170 case WebAccessibilityRoleTableHeaderContainer: 171 171 return result.append("TableHeaderContainer"); 172 case WebAccessibilityRoleDefinitionListTerm: 173 return result.append("DefinitionListTerm"); 174 case WebAccessibilityRoleDefinitionListDefinition: 175 return result.append("DefinitionListDefinition"); 172 case WebAccessibilityRoleDefinition: 173 return result.append("Definition"); 174 case WebAccessibilityRoleDescriptionListTerm: 175 return result.append("DescriptionListTerm"); 176 case WebAccessibilityRoleDescriptionListDetail: 177 return result.append("DescriptionListDetail"); 176 178 case WebAccessibilityRoleAnnotation: 177 179 return result.append("Annotation");
Note: See TracChangeset
for help on using the changeset viewer.