Commit f6bb2080 authored by Tibor Goldschwendt's avatar Tibor Goldschwendt Committed by Commit Bot

[ntp][modules] Allow modules to set their height

+ Shrink Kaleidoscope module according to spec.

+ Add closure compiler annotation to module descriptor.

Change-Id: Id99185a8b1ee62d154cc663d2d525beaa91a29b3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2376460
Commit-Queue: Becca Hughes <beccahughes@chromium.org>
Reviewed-by: default avatarBecca Hughes <beccahughes@chromium.org>
Auto-Submit: Tibor Goldschwendt <tiborg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#801816}
parent 92246cf9
...@@ -6,7 +6,10 @@ ...@@ -6,7 +6,10 @@
} }
#header { #header {
margin: 10px; align-items: center;
display: flex;
height: 22px;
margin: 16px;
} }
#title { #title {
...@@ -15,12 +18,12 @@ ...@@ -15,12 +18,12 @@
#name { #name {
color: var(--cr-secondary-text-color); color: var(--cr-secondary-text-color);
white-space: pre;
} }
#moduleElement { #moduleElement {
align-items: center; align-items: center;
display: flex; display: flex;
height: 330px;
justify-content: center; justify-content: center;
overflow: hidden; overflow: hidden;
} }
......
...@@ -30,6 +30,7 @@ class ModuleWrapperElement extends PolymerElement { ...@@ -30,6 +30,7 @@ class ModuleWrapperElement extends PolymerElement {
onDescriptorChange_() { onDescriptorChange_() {
this.$.moduleElement.innerHTML = ''; this.$.moduleElement.innerHTML = '';
this.$.moduleElement.appendChild(this.descriptor.element); this.$.moduleElement.appendChild(this.descriptor.element);
this.$.moduleElement.style.height = `${this.descriptor.heightPx}px`;
} }
} }
......
...@@ -41,15 +41,16 @@ customElements.define(DummyModuleElement.is, DummyModuleElement); ...@@ -41,15 +41,16 @@ customElements.define(DummyModuleElement.is, DummyModuleElement);
/** @type {!ModuleDescriptor} */ /** @type {!ModuleDescriptor} */
export const dummyDescriptor = new ModuleDescriptor( export const dummyDescriptor = new ModuleDescriptor(
'dummy', loadTimeData.getString('modulesDummyName'), () => Promise.resolve({ /*id=*/ 'dummy', /*name=*/ loadTimeData.getString('modulesDummyName'),
/*heightPx=*/ 260, () => Promise.resolve({
element: new DummyModuleElement(), element: new DummyModuleElement(),
title: loadTimeData.getString('modulesDummyTitle'), title: loadTimeData.getString('modulesDummyTitle'),
})); }));
/** @type {!ModuleDescriptor} */ /** @type {!ModuleDescriptor} */
export const dummyDescriptor2 = new ModuleDescriptor( export const dummyDescriptor2 = new ModuleDescriptor(
'dummy2', loadTimeData.getString('modulesDummy2Name'), /*id=*/ 'dummy2', /*name=*/ loadTimeData.getString('modulesDummy2Name'),
() => Promise.resolve({ /*heightPx=*/ 260, () => Promise.resolve({
element: new DummyModuleElement(), element: new DummyModuleElement(),
title: loadTimeData.getString('modulesDummy2Title'), title: loadTimeData.getString('modulesDummy2Title'),
})); }));
...@@ -56,8 +56,9 @@ function loadResource(resource) { ...@@ -56,8 +56,9 @@ function loadResource(resource) {
/** @type {!ModuleDescriptor} */ /** @type {!ModuleDescriptor} */
export const kaleidoscopeDescriptor = new ModuleDescriptor( export const kaleidoscopeDescriptor = new ModuleDescriptor(
'kaleidoscope', /*id=*/ 'kaleidoscope',
loadTimeData.getString('modulesKaleidoscopeName'), /*name=*/ loadTimeData.getString('modulesKaleidoscopeName'),
/*heightPx=*/ 270,
() => { () => {
// Load all the Kaleidoscope resources into the NTP and return the module // Load all the Kaleidoscope resources into the NTP and return the module
// once the loading is complete. // once the loading is complete.
......
...@@ -19,28 +19,45 @@ export class ModuleDescriptor { ...@@ -19,28 +19,45 @@ export class ModuleDescriptor {
/** /**
* @param {string} id * @param {string} id
* @param {string} name * @param {string} name
* @param {number} heightPx
* @param {!InitializeModuleCallback} initializeCallback * @param {!InitializeModuleCallback} initializeCallback
*/ */
constructor(id, name, initializeCallback) { constructor(id, name, heightPx, initializeCallback) {
/** @private {string} */
this.id_ = id; this.id_ = id;
/** @private {string} */
this.name_ = name; this.name_ = name;
/** @private {number} */
this.heightPx_ = heightPx;
/** @private {?string} */
this.title_ = null; this.title_ = null;
/** @private {HTMLElement} */
this.element_ = null; this.element_ = null;
/** @private {!InitializeModuleCallback} */
this.initializeCallback_ = initializeCallback; this.initializeCallback_ = initializeCallback;
} }
/** @return {string} */
get id() { get id() {
return this.id_; return this.id_;
} }
/** @return {string} */
get name() { get name() {
return this.name_; return this.name_;
} }
/** @return {number} */
get heightPx() {
return this.heightPx_;
}
/** @return {?string} */
get title() { get title() {
return this.title_; return this.title_;
} }
/** @return {HTMLElement} */
get element() { get element() {
return this.element_; return this.element_;
} }
......
...@@ -22,6 +22,7 @@ suite('NewTabPageModuleWrapperTest', () => { ...@@ -22,6 +22,7 @@ suite('NewTabPageModuleWrapperTest', () => {
moduleWrapper.descriptor = { moduleWrapper.descriptor = {
id: 'foo', id: 'foo',
name: 'Foo', name: 'Foo',
heightPx: 100,
title: 'Foo Title', title: 'Foo Title',
element: moduleElement, element: moduleElement,
}; };
...@@ -29,6 +30,7 @@ suite('NewTabPageModuleWrapperTest', () => { ...@@ -29,6 +30,7 @@ suite('NewTabPageModuleWrapperTest', () => {
// Assert. // Assert.
assertEquals('Foo Title', moduleWrapper.$.title.textContent); assertEquals('Foo Title', moduleWrapper.$.title.textContent);
assertEquals(' • Foo', moduleWrapper.$.name.textContent); assertEquals(' • Foo', moduleWrapper.$.name.textContent);
assertEquals(100, $$(moduleWrapper, '#moduleElement').offsetHeight);
assertDeepEquals( assertDeepEquals(
moduleElement, $$(moduleWrapper, '#moduleElement').children[0]); moduleElement, $$(moduleWrapper, '#moduleElement').children[0]);
}); });
......
...@@ -12,12 +12,12 @@ suite('NewTabPageModulesModuleRegistryTest', () => { ...@@ -12,12 +12,12 @@ suite('NewTabPageModulesModuleRegistryTest', () => {
const bazModule = document.createElement('div'); const bazModule = document.createElement('div');
const bazModuleResolver = new PromiseResolver(); const bazModuleResolver = new PromiseResolver();
ModuleRegistry.getInstance().registerModules([ ModuleRegistry.getInstance().registerModules([
new ModuleDescriptor('foo', 'Foo', () => Promise.resolve({ new ModuleDescriptor('foo', 'Foo', 100, () => Promise.resolve({
element: fooModule, element: fooModule,
title: 'Foo Title', title: 'Foo Title',
})), })),
new ModuleDescriptor('bar', 'Bar', () => null), new ModuleDescriptor('bar', 'Bar', 200, () => null),
new ModuleDescriptor('baz', 'Baz', () => bazModuleResolver.promise), new ModuleDescriptor('baz', 'Baz', 300, () => bazModuleResolver.promise),
]); ]);
// Act. // Act.
...@@ -33,10 +33,12 @@ suite('NewTabPageModulesModuleRegistryTest', () => { ...@@ -33,10 +33,12 @@ suite('NewTabPageModulesModuleRegistryTest', () => {
assertEquals(2, modules.length); assertEquals(2, modules.length);
assertEquals('foo', modules[0].id); assertEquals('foo', modules[0].id);
assertEquals('Foo', modules[0].name); assertEquals('Foo', modules[0].name);
assertEquals(100, modules[0].heightPx);
assertEquals('Foo Title', modules[0].title); assertEquals('Foo Title', modules[0].title);
assertDeepEquals(fooModule, modules[0].element); assertDeepEquals(fooModule, modules[0].element);
assertEquals('baz', modules[1].id); assertEquals('baz', modules[1].id);
assertEquals('Baz', modules[1].name); assertEquals('Baz', modules[1].name);
assertEquals(300, modules[1].heightPx);
assertEquals('Baz Title', modules[1].title); assertEquals('Baz Title', modules[1].title);
assertDeepEquals(bazModule, modules[1].element); assertDeepEquals(bazModule, modules[1].element);
}); });
......
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