Commit 38ad3880 authored by John Lee's avatar John Lee Committed by Commit Bot

WebUI Tab Strip: Add type checking for DragManager test

Bug: 1000989
Change-Id: I965f1a0ebc3cffca8a66043e90540cc3740e41c7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2209277Reviewed-by: default avatardpapad <dpapad@chromium.org>
Commit-Queue: John Lee <johntlee@chromium.org>
Cr-Commit-Position: refs/heads/master@{#770379}
parent 852a4dad
...@@ -16,7 +16,8 @@ js_type_check("closure_compile") { ...@@ -16,7 +16,8 @@ js_type_check("closure_compile") {
deps = [ deps = [
#":alert_indicator_test", #":alert_indicator_test",
#":alert_indicators_test", #":alert_indicators_test",
#":drag_manager_test", ":drag_manager_test",
#":tab_group_test", #":tab_group_test",
#":tab_list_test", #":tab_list_test",
#":tab_swiper_test", #":tab_swiper_test",
...@@ -39,3 +40,17 @@ js_library("test_tabs_api_proxy") { ...@@ -39,3 +40,17 @@ js_library("test_tabs_api_proxy") {
"//chrome/browser/resources/tab_strip:tabs_api_proxy", "//chrome/browser/resources/tab_strip:tabs_api_proxy",
] ]
} }
js_library("drag_manager_test") {
deps = [
":test_tabs_api_proxy",
"..:chai_assert",
"//chrome/browser/resources/tab_strip:drag_manager",
"//chrome/browser/resources/tab_strip:tab",
"//chrome/browser/resources/tab_strip:tab_group",
"//chrome/browser/resources/tab_strip:tabs_api_proxy",
"//ui/webui/resources/js:cr.m",
"//ui/webui/resources/js:load_time_data.m",
]
externs_list = [ "$externs_path/mocha-2.5.js" ]
}
...@@ -3,19 +3,24 @@ ...@@ -3,19 +3,24 @@
// found in the LICENSE file. // found in the LICENSE file.
import {isChromeOS} from 'chrome://resources/js/cr.m.js'; import {isChromeOS} from 'chrome://resources/js/cr.m.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js'; import {loadTimeData} from 'chrome://resources/js/load_time_data.m.js';
import {DragManager, PLACEHOLDER_GROUP_ID, PLACEHOLDER_TAB_ID} from 'chrome://tab-strip/drag_manager.js'; import {DragManager, DragManagerDelegate, PLACEHOLDER_GROUP_ID, PLACEHOLDER_TAB_ID} from 'chrome://tab-strip/drag_manager.js';
import {TabElement} from 'chrome://tab-strip/tab.js'; import {TabElement} from 'chrome://tab-strip/tab.js';
import {TabGroupElement} from 'chrome://tab-strip/tab_group.js'; import {TabGroupElement} from 'chrome://tab-strip/tab_group.js';
import {TabsApiProxyImpl} from 'chrome://tab-strip/tabs_api_proxy.js'; import {TabData, TabsApiProxyImpl} from 'chrome://tab-strip/tabs_api_proxy.js';
import {assertEquals, assertFalse, assertTrue} from '../chai_assert.js';
import {TestTabsApiProxy} from './test_tabs_api_proxy.js'; import {TestTabsApiProxy} from './test_tabs_api_proxy.js';
/** @implements {DragManagerDelegate} */
class MockDelegate extends HTMLElement { class MockDelegate extends HTMLElement {
/** @override */
getIndexOfTab(tabElement) { getIndexOfTab(tabElement) {
return Array.from(this.querySelectorAll('tabstrip-tab')) return Array.from(this.querySelectorAll('tabstrip-tab'))
.indexOf(tabElement); .indexOf(tabElement);
} }
/** @override */
placeTabElement(element, index, pinned, groupId) { placeTabElement(element, index, pinned, groupId) {
element.remove(); element.remove();
...@@ -24,14 +29,11 @@ class MockDelegate extends HTMLElement { ...@@ -24,14 +29,11 @@ class MockDelegate extends HTMLElement {
parent.insertBefore(element, this.children[index]); parent.insertBefore(element, this.children[index]);
} }
/** @override */
placeTabGroupElement(element, index) { placeTabGroupElement(element, index) {
element.remove(); element.remove();
this.insertBefore(element, this.children[index]); this.insertBefore(element, this.children[index]);
} }
showDropPlaceholder(element) {
this.appendChild(element);
}
} }
customElements.define('mock-delegate', MockDelegate); customElements.define('mock-delegate', MockDelegate);
...@@ -39,32 +41,41 @@ class MockDataTransfer extends DataTransfer { ...@@ -39,32 +41,41 @@ class MockDataTransfer extends DataTransfer {
constructor() { constructor() {
super(); super();
/** @private {!Object} */
this.dragImageData = { this.dragImageData = {
image: undefined, image: undefined,
offsetX: undefined, offsetX: undefined,
offsetY: undefined, offsetY: undefined,
}; };
/** @private {string} */
this.dropEffect_ = 'none'; this.dropEffect_ = 'none';
/** @private {string} */
this.effectAllowed_ = 'none'; this.effectAllowed_ = 'none';
} }
/** @override */
get dropEffect() { get dropEffect() {
return this.dropEffect_; return this.dropEffect_;
} }
/** @override */
set dropEffect(effect) { set dropEffect(effect) {
this.dropEffect_ = effect; this.dropEffect_ = effect;
} }
/** @override */
get effectAllowed() { get effectAllowed() {
return this.effectAllowed_; return this.effectAllowed_;
} }
/** @override */
set effectAllowed(effect) { set effectAllowed(effect) {
this.effectAllowed_ = effect; this.effectAllowed_ = effect;
} }
/** @override */
setDragImage(image, offsetX, offsetY) { setDragImage(image, offsetX, offsetY) {
this.dragImageData.image = image; this.dragImageData.image = image;
this.dragImageData.offsetX = offsetX; this.dragImageData.offsetX = offsetX;
...@@ -107,11 +118,13 @@ suite('DragManager', () => { ...@@ -107,11 +118,13 @@ suite('DragManager', () => {
* @return {!TabGroupElement} * @return {!TabGroupElement}
*/ */
function groupTab(tabElement, groupId) { function groupTab(tabElement, groupId) {
const groupElement = document.createElement('tabstrip-tab-group'); const groupElement = /** @type {!TabGroupElement} */ (
document.createElement('tabstrip-tab-group'));
groupElement.setAttribute('data-group-id', groupId); groupElement.setAttribute('data-group-id', groupId);
delegate.replaceChild(groupElement, tabElement); delegate.replaceChild(groupElement, tabElement);
tabElement.tab = Object.assign({}, tabElement.tab, {groupId}); tabElement.tab =
/** @type {!TabData} */ (Object.assign({}, tabElement.tab, {groupId}));
groupElement.appendChild(tabElement); groupElement.appendChild(tabElement);
return groupElement; return groupElement;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment