Index: chrome/test/data/webui/cr_elements/cr_dialog_test.js |
diff --git a/chrome/test/data/webui/cr_elements/cr_dialog_test.js b/chrome/test/data/webui/cr_elements/cr_dialog_test.js |
index 5f9c1b1fa3be8f5c9797990b7e55b255bc72d60d..7cd767e59c7bf61bbd7bdd2180f35ad6371a3b3b 100644 |
--- a/chrome/test/data/webui/cr_elements/cr_dialog_test.js |
+++ b/chrome/test/data/webui/cr_elements/cr_dialog_test.js |
@@ -44,4 +44,38 @@ suite('cr-dialog', function() { |
expectNotEquals(dialog, document.activeElement); |
expectEquals(button, document.activeElement); |
}); |
+ |
+ test('dialog body scrollable border when appropriate', function(done) { |
+ document.body.innerHTML = ` |
+ <dialog is="cr-dialog" show-scroll-borders> |
+ <div class="title">title</div> |
+ <div class="body">body</div> |
+ </dialog>`; |
+ |
+ var dialog = document.body.querySelector('dialog'); |
+ var bodyContainer = dialog.$$('.body-container'); |
+ assertTrue(!!bodyContainer); |
+ |
+ var observerCount = 0; |
+ |
+ // Needs to setup the observer before attaching, since InteractionObserver |
+ // calls callback before MutationObserver does. |
+ var observer = new MutationObserver(function() { |
+ observerCount++; |
+ if (observerCount == 1) { // Triggered when scrolled to bottom. |
+ assertFalse(bodyContainer.classList.contains('bottom-scrollable')); |
+ bodyContainer.scrollTop = 0; |
+ } else if (observerCount == 2) { // Triggered when scrolled back to top. |
+ assertTrue(bodyContainer.classList.contains('bottom-scrollable')); |
+ observer.disconnect(); |
+ done(); |
+ } |
+ }); |
+ observer.observe(bodyContainer, {attributes: true}); |
+ |
+ // Height is normally set via CSS, but mixin doesn't work with innerHTML. |
+ bodyContainer.style.height = '1px'; |
+ bodyContainer.scrollTop = 100; |
+ dialog.showModal(); // Attach the dialog for the first time here. |
+ }); |
}); |