1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 tvcm.require('tvcm.ui.drag_handle');
9 tvcm.unittest.testSuite('tvcm.ui.drag_handle_test', function() {
10 var createDragHandle = function() {
11 var el = document.createElement('div');
12 el.style.border = '1px solid black';
13 el.style.width = '200px';
14 el.style.height = '200px';
15 el.style.display = '-webkit-flex';
16 el.style.webkitFlexDirection = 'column';
18 var upperEl = document.createElement('div');
19 upperEl.style.webkitFlex = '1 1 auto';
21 var lowerEl = document.createElement('div');
22 lowerEl.style.height = '100px';
24 var dragHandle = new tvcm.ui.DragHandle();
25 dragHandle.target = lowerEl;
27 el.appendChild(upperEl);
28 el.appendChild(dragHandle);
29 el.appendChild(lowerEl);
31 el.dragHandle = dragHandle;
34 el.getLowerElHeight = function() {
35 return parseInt(getComputedStyle(this.lowerEl).height);
40 test('instantiate', function() {
41 this.addHTMLOutput(createDragHandle());
44 test('applyDelta', function() {
45 var el = createDragHandle();
46 document.body.appendChild(el);
48 var dragHandle = el.dragHandle;
49 var oldHeight = el.getLowerElHeight();
50 dragHandle.applyDelta_(10);
51 assertEquals(oldHeight + 10, el.getLowerElHeight());
53 document.body.removeChild(el);
56 test('classNameMutation', function() {
57 var el = createDragHandle();
59 var styleEl = document.createElement('style');
61 '.mode-a { height: 100px; } .mode-b { height: 50px; }';
62 document.head.appendChild(styleEl);
64 document.body.appendChild(el);
66 var dragHandle = el.dragHandle;
67 el.lowerEl.className = 'mode-a';
68 assertEquals(100, el.getLowerElHeight());
70 dragHandle.applyDelta_(10);
71 assertEquals(110, el.getLowerElHeight());
73 // Change the class, which should restore the layout
74 // to the default sizing for mode-b
75 el.lowerEl.className = 'mode-b';
76 dragHandle.forceMutationObserverFlush_();
77 assertEquals(50, el.getLowerElHeight());
79 dragHandle.applyDelta_(10);
80 assertEquals(60, el.getLowerElHeight());
82 // Restore the class-a, which should restore the layout
83 // to sizing when we were changed.
84 el.lowerEl.className = 'mode-a';
85 dragHandle.forceMutationObserverFlush_();
86 assertEquals(110, el.getLowerElHeight());
88 document.head.removeChild(styleEl);
89 document.body.removeChild(el);