summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser_resources.grd1
-rw-r--r--chrome/browser/resources/local_ntp/local_ntp.js131
-rw-r--r--chrome/browser/resources/local_ntp/local_ntp_design.js61
-rw-r--r--chrome/browser/search/local_ntp_source.cc1
4 files changed, 125 insertions, 69 deletions
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index 540d069..3d40483 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -206,6 +206,7 @@
<include name="IDR_LOCAL_NTP_CSS" file="resources\local_ntp\local_ntp.css" type="BINDATA" />
<include name="IDR_LOCAL_NTP_JS" file="resources\local_ntp\local_ntp.js" flattenhtml="true" type="BINDATA" />
<include name="IDR_LOCAL_NTP_UTIL_JS" file="resources\local_ntp\local_ntp_util.js" flattenhtml="true" type="BINDATA" />
+ <include name="IDR_LOCAL_NTP_DESIGN_JS" file="resources\local_ntp\local_ntp_design.js" flattenhtml="true" type="BINDATA" />
<include name="IDR_MOST_VISITED_IFRAME_CSS" file="resources\local_ntp\most_visited_iframe.css" type="BINDATA" />
<include name="IDR_MOST_VISITED_TITLE_HTML" file="resources\local_ntp\most_visited_title.html" type="BINDATA" />
<include name="IDR_MOST_VISITED_TITLE_CSS" file="resources\local_ntp\most_visited_title.css" type="BINDATA" />
diff --git a/chrome/browser/resources/local_ntp/local_ntp.js b/chrome/browser/resources/local_ntp/local_ntp.js
index d775540..9aaa9a8 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';
diff --git a/chrome/browser/resources/local_ntp/local_ntp_design.js b/chrome/browser/resources/local_ntp/local_ntp_design.js
new file mode 100644
index 0000000..59ed11f
--- /dev/null
+++ b/chrome/browser/resources/local_ntp/local_ntp_design.js
@@ -0,0 +1,61 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+
+/**
+ * @fileoverview Specifications for the NTP design, and an accessor to presets.
+ */
+
+
+/**
+ * Specifications for an NTP design (not comprehensive).
+ *
+ * name: A unique identifier for the style.
+ * appropriate CSS will take effect.
+ * fontFamily: Font family to use for title and thumbnail <iframe>s.
+ * fontSize: Font size to use for the <iframe>s, in px.
+ * tileWidth: The width of each suggestion tile, in px.
+ * tileMargin: Spacing between successive tiles, in px.
+ * titleColor: The RRGGBB color of title text.
+ * titleTextAlign: (Optional) The alignment of title text. If unspecified, the
+ * default value is 'center'.
+ * titleTextFade: (Optional) The number of pixels beyond which title
+ * text begins to fade. This overrides the default ellipsis style.
+ * thumbnailTextColor: The RRGGBB color that thumbnail <iframe> may use to
+ * display text message in place of missing thumbnail.
+ *
+ * @typedef {{
+ * name: string,
+ * fontFamily: string,
+ * fontSize: number,
+ * tileWidth: number,
+ * tileMargin: number,
+ * titleColor: string,
+ * titleTextAlign: string|null|undefined,
+ * titleTextFade: string|null|undefined,
+ * thumbnailTextColor: string
+ * }}
+ */
+var NtpDesign;
+
+/**
+ * Returns an NTP design corresponding to the given name.
+ * @param {string|undefined} opt_name The name of the design. If undefined, then
+ * the default design is specified.
+ * @return {NtpDesign} The NTP design corresponding to name.
+ */
+function getNtpDesign(opt_name) {
+ // TODO(huangs): Add new style.
+ return {
+ name: 'classical',
+ fontFamily: 'arial, sans-serif',
+ fontSize: 11,
+ tileWidth: 140,
+ tileMargin: 20,
+ titleColor: '777777',
+ // No titleTextAlign: defaults to 'center'.
+ // No titleTextFade: by default we have ellipsis.
+ thumbnailTextColor: '777777'
+ };
+}
diff --git a/chrome/browser/search/local_ntp_source.cc b/chrome/browser/search/local_ntp_source.cc
index f9fefbe..a669e29 100644
--- a/chrome/browser/search/local_ntp_source.cc
+++ b/chrome/browser/search/local_ntp_source.cc
@@ -51,7 +51,6 @@ const struct Resource{
} kResources[] = {
{ kLocalNTPFilename, IDR_LOCAL_NTP_HTML, "text/html" },
{ "local-ntp.js", IDR_LOCAL_NTP_JS, "application/javascript" },
- { "local-ntp-util.js", IDR_LOCAL_NTP_UTIL_JS, "application/javascript" },
{ kConfigDataFilename, kLocalResource, "application/javascript" },
{ "local-ntp.css", IDR_LOCAL_NTP_CSS, "text/css" },
{ "images/close_2.png", IDR_CLOSE_2, "image/png" },