Index: chrome/browser/resources/local_ntp/local_ntp.js |
diff --git a/chrome/browser/resources/local_ntp/local_ntp.js b/chrome/browser/resources/local_ntp/local_ntp.js |
index d7755406be73113f43763e4d5d7acc39b75f6e64..9aaa9a814bb1b7410f2e92e39f7db5a0e03bb55f 100644 |
--- a/chrome/browser/resources/local_ntp/local_ntp.js |
+++ b/chrome/browser/resources/local_ntp/local_ntp.js |
@@ -14,6 +14,7 @@ |
*/ |
function LocalNTP() { |
<include src="../../../../ui/webui/resources/js/assert.js"> |
+<include src="local_ntp_design.js"> |
<include src="local_ntp_util.js"> |
<include src="window_disposition_util.js"> |
@@ -102,6 +103,13 @@ var MIDDLE_MOUSE_BUTTON = 1; |
/** |
+ * Specifications for the NTP design. |
+ * @const {NtpDesign} |
+ */ |
+var NTP_DESIGN = getNtpDesign(configData.ntpDesignName); |
+ |
+ |
+/** |
* The container for the tile elements. |
* @type {Element} |
*/ |
@@ -204,22 +212,6 @@ var omniboxInputBehavior = NTP_DISPOSE_STATE.NONE; |
var fakeboxInputBehavior = NTP_DISPOSE_STATE.HIDE_FAKEBOX_AND_LOGO; |
-/** |
- * Total tile width. Should be equal to mv-tile's width + 2 * border-width. |
- * @private {number} |
- * @const |
- */ |
-var TILE_WIDTH = 140; |
- |
- |
-/** |
- * Margin between tiles. Should be equal to mv-tile's total horizontal margin. |
- * @private {number} |
- * @const |
- */ |
-var TILE_MARGIN = 20; |
- |
- |
/** @type {number} @const */ |
var MAX_NUM_TILES_TO_SHOW = 8; |
@@ -262,30 +254,6 @@ var MOST_VISITED_THUMBNAIL_IFRAME = 'thumbnail.html'; |
/** |
- * The hex color for most visited tile elements. |
- * @type {string} |
- * @const |
- */ |
-var MOST_VISITED_COLOR = '777777'; |
- |
- |
-/** |
- * The font family for most visited tile elements. |
- * @type {string} |
- * @const |
- */ |
-var MOST_VISITED_FONT_FAMILY = 'arial, sans-serif'; |
- |
- |
-/** |
- * The font size for most visited tile elements. |
- * @type {number} |
- * @const |
- */ |
-var MOST_VISITED_FONT_SIZE = 11; |
- |
- |
-/** |
* Hide most visited tiles for at most this many milliseconds while painting. |
* @type {number} |
* @const |
@@ -370,7 +338,7 @@ function setCustomThemeStyle(opt_themeInfo) { |
'}' + |
'.mv-page-ready {' + |
' border: 1px solid ' + |
- convertToRGBAColor(opt_themeInfo.sectionBorderColorRgba) + ';' + |
+ convertToRGBAColor(opt_themeInfo.sectionBorderColorRgba) + ';' + |
'}' + |
'.mv-page-ready:hover, .mv-page-ready:focus {' + |
' border-color: ' + |
@@ -560,23 +528,44 @@ function renderAndShowTiles() { |
/** |
- * Builds a URL to display a most visited tile component in an iframe. |
- * @param {string} filename The desired most visited component filename. |
+ * Builds a URL to display a most visited tile title in an iframe. |
* @param {number} rid The restricted ID. |
- * @param {string} color The text color for text in the iframe. |
- * @param {string} fontFamily The font family for text in the iframe. |
- * @param {number} fontSize The font size for text in the iframe. |
* @param {number} position The position of the iframe in the UI. |
- * @return {string} An URL to display the most visited component in an iframe. |
- */ |
-function getMostVisitedIframeUrl(filename, rid, color, fontFamily, fontSize, |
- position) { |
- return 'chrome-search://most-visited/' + encodeURIComponent(filename) + '?' + |
- ['rid=' + encodeURIComponent(rid), |
- 'c=' + encodeURIComponent(color), |
- 'f=' + encodeURIComponent(fontFamily), |
- 'fs=' + encodeURIComponent(fontSize), |
- 'pos=' + encodeURIComponent(position)].join('&'); |
+ * @return {string} An URL to display the most visited title in an iframe. |
+ */ |
+function getMostVisitedTitleIframeUrl(rid, position) { |
+ var url = 'chrome-search://most-visited/' + |
+ encodeURIComponent(MOST_VISITED_TITLE_IFRAME); |
+ var params = [ |
+ 'rid=' + encodeURIComponent(rid), |
+ 'f=' + encodeURIComponent(NTP_DESIGN.fontFamily), |
+ 'fs=' + encodeURIComponent(NTP_DESIGN.fontSize), |
+ 'c=' + encodeURIComponent(NTP_DESIGN.titleColor), |
+ 'pos=' + encodeURIComponent(position)]; |
+ if (NTP_DESIGN.titleTextAlign) |
+ params.push('ta=' + encodeURIComponent(NTP_DESIGN.titleTextAlign)); |
+ if (NTP_DESIGN.titleTextFade) |
+ params.push('tf=' + encodeURIComponent(NTP_DESIGN.titleTextFade)); |
+ return url + '?' + params.join('&'); |
+} |
+ |
+ |
+/** |
+ * Builds a URL to display a most visited tile thumbnail in an iframe. |
+ * @param {number} rid The restricted ID. |
+ * @param {number} position The position of the iframe in the UI. |
+ * @return {string} An URL to display the most visited thumbnail in an iframe. |
+ */ |
+function getMostVisitedThumbnailIframeUrl(rid, position) { |
+ var url = 'chrome-search://most-visited/' + |
+ encodeURIComponent(MOST_VISITED_THUMBNAIL_IFRAME); |
+ var params = [ |
+ 'rid=' + encodeURIComponent(rid), |
+ 'f=' + encodeURIComponent(NTP_DESIGN.fontFamily), |
+ 'fs=' + encodeURIComponent(NTP_DESIGN.fontSize), |
+ 'c=' + encodeURIComponent(NTP_DESIGN.thumbnailTextColor), |
+ 'pos=' + encodeURIComponent(position)]; |
+ return url + '?' + params.join('&'); |
} |
@@ -629,9 +618,7 @@ function createTile(page, position) { |
titleElement.id = 'title-' + rid; |
titleElement.className = CLASSES.TITLE; |
titleElement.hidden = true; |
- titleElement.src = getMostVisitedIframeUrl( |
- MOST_VISITED_TITLE_IFRAME, rid, MOST_VISITED_COLOR, |
- MOST_VISITED_FONT_FAMILY, MOST_VISITED_FONT_SIZE, position); |
+ titleElement.src = getMostVisitedTitleIframeUrl(rid, position); |
tileElement.appendChild(titleElement); |
// The iframe which renders either a thumbnail or domain element. |
@@ -641,9 +628,7 @@ function createTile(page, position) { |
thumbnailElement.id = 'thumb-' + rid; |
thumbnailElement.className = CLASSES.THUMBNAIL; |
thumbnailElement.hidden = true; |
- thumbnailElement.src = getMostVisitedIframeUrl( |
- MOST_VISITED_THUMBNAIL_IFRAME, rid, MOST_VISITED_COLOR, |
- MOST_VISITED_FONT_FAMILY, MOST_VISITED_FONT_SIZE, position); |
+ thumbnailElement.src = getMostVisitedThumbnailIframeUrl(rid, position); |
tileElement.appendChild(thumbnailElement); |
// A mask to darken the thumbnail on focus. |
@@ -743,11 +728,14 @@ function onRestoreAll() { |
* new width of the page. |
*/ |
function onResize() { |
+ var tileRequiredWidth = NTP_DESIGN.tileWidth + NTP_DESIGN.tileMargin; |
// If innerWidth is zero, then use the maximum snap size. |
- var innerWidth = window.innerWidth || 820; |
- // Each tile has left and right margins that sum to TILE_MARGIN. |
- var tileRequiredWidth = TILE_WIDTH + TILE_MARGIN; |
- var availableWidth = innerWidth + TILE_MARGIN - MIN_TOTAL_HORIZONTAL_PADDING; |
+ var maxSnapSize = MAX_NUM_COLUMNS * tileRequiredWidth - |
+ NTP_DESIGN.tileMargin + MIN_TOTAL_HORIZONTAL_PADDING; |
+ var innerWidth = window.innerWidth || maxSnapSize; |
+ // Each tile has left and right margins that sum to NTP_DESIGN.tileMargin. |
+ var availableWidth = innerWidth + NTP_DESIGN.tileMargin - |
+ MIN_TOTAL_HORIZONTAL_PADDING; |
var newNumColumns = Math.floor(availableWidth / tileRequiredWidth); |
if (newNumColumns < MIN_NUM_COLUMNS) |
newNumColumns = MIN_NUM_COLUMNS; |
@@ -758,8 +746,11 @@ function onResize() { |
numColumnsShown = newNumColumns; |
var tilesContainerWidth = numColumnsShown * tileRequiredWidth; |
tilesContainer.style.width = tilesContainerWidth + 'px'; |
- if (fakebox) // -2 to account for border. |
- fakebox.style.width = (tilesContainerWidth - TILE_MARGIN - 2) + 'px'; |
+ if (fakebox) { |
+ // -2 to account for border. |
+ fakebox.style.width = |
+ (tilesContainerWidth - NTP_DESIGN.tileMargin - 2) + 'px'; |
+ } |
// Render without clearing tiles. |
renderAndShowTiles(); |
} |
@@ -959,15 +950,18 @@ function init() { |
var notificationMessage = $(IDS.NOTIFICATION_MESSAGE); |
notificationMessage.textContent = |
configData.translatedStrings.thumbnailRemovedNotification; |
+ |
var undoLink = $(IDS.UNDO_LINK); |
undoLink.addEventListener('click', onUndo); |
registerKeyHandler(undoLink, KEYCODE.ENTER, onUndo); |
undoLink.textContent = configData.translatedStrings.undoThumbnailRemove; |
+ |
var restoreAllLink = $(IDS.RESTORE_ALL_LINK); |
restoreAllLink.addEventListener('click', onRestoreAll); |
registerKeyHandler(restoreAllLink, KEYCODE.ENTER, onUndo); |
restoreAllLink.textContent = |
configData.translatedStrings.restoreThumbnailsShort; |
+ |
$(IDS.ATTRIBUTION_TEXT).textContent = |
configData.translatedStrings.attributionIntro; |
@@ -1032,6 +1026,7 @@ function init() { |
if (searchboxApiHandle.rtl) { |
$(IDS.NOTIFICATION).dir = 'rtl'; |
+ document.body.setAttribute('dir', 'rtl'); |
// Add class for setting alignments based on language directionality. |
document.body.classList.add(CLASSES.RTL); |
$(IDS.TILES).dir = 'rtl'; |