Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(69)

Side by Side Diff: chrome/browser/resources/ntp4/new_tab.js

Issue 7461160: ntp4 info bubble (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: arv review Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview New tab page 6 * @fileoverview New tab page
7 * This is the main code for the new tab page used by touch-enabled Chrome 7 * This is the main code for the new tab page used by touch-enabled Chrome
8 * browsers. For now this is still a prototype. 8 * browsers. For now this is still a prototype.
9 */ 9 */
10 10
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 103
104 /** 104 /**
105 * If non-null, this is the ID of the app to highlight to the user the next 105 * If non-null, this is the ID of the app to highlight to the user the next
106 * time getAppsCallback runs. "Highlight" in this case means to switch to 106 * time getAppsCallback runs. "Highlight" in this case means to switch to
107 * the page and run the new tile animation. 107 * the page and run the new tile animation.
108 * @type {String} 108 * @type {String}
109 */ 109 */
110 var highlightAppId = null; 110 var highlightAppId = null;
111 111
112 /** 112 /**
113 * If non-null, an info bubble for showing messages to the user. It points at
114 * the Most Visited label, and is used to draw more attention to the
115 * navigation dot UI.
116 * @type {!Element|undefined}
117 */
118 var infoBubble;
119
120 /**
113 * The time in milliseconds for most transitions. This should match what's 121 * The time in milliseconds for most transitions. This should match what's
114 * in new_tab.css. Unfortunately there's no better way to try to time 122 * in new_tab.css. Unfortunately there's no better way to try to time
115 * something to occur until after a transition has completed. 123 * something to occur until after a transition has completed.
116 * @type {number} 124 * @type {number}
117 * @const 125 * @const
118 */ 126 */
119 var DEFAULT_TRANSITION_TIME = 500; 127 var DEFAULT_TRANSITION_TIME = 500;
120 128
121 /** 129 /**
122 * Invoked at startup once the DOM is available to initialize the app. 130 * Invoked at startup once the DOM is available to initialize the app.
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 CardSlider.EventType.CARD_CHANGED, 188 CardSlider.EventType.CARD_CHANGED,
181 cardChangedHandler); 189 cardChangedHandler);
182 190
183 cr.ui.decorate($('recently-closed-menu-button'), ntp4.RecentMenuButton); 191 cr.ui.decorate($('recently-closed-menu-button'), ntp4.RecentMenuButton);
184 chrome.send('getRecentlyClosedTabs'); 192 chrome.send('getRecentlyClosedTabs');
185 193
186 mostVisitedPage = new ntp4.MostVisitedPage(); 194 mostVisitedPage = new ntp4.MostVisitedPage();
187 appendTilePage(mostVisitedPage, localStrings.getString('mostvisited')); 195 appendTilePage(mostVisitedPage, localStrings.getString('mostvisited'));
188 chrome.send('getMostVisited'); 196 chrome.send('getMostVisited');
189 197
198 if (localStrings.getString('ntp4_intro_message')) {
199 infoBubble = new cr.ui.Bubble;
200 infoBubble.anchorNode = mostVisitedPage.navigationDot;
201 infoBubble.text = localStrings.getString('ntp4_intro_message');
202 infoBubble.show();
203
204 chrome.send('introMessageSeen');
205 }
206
190 bookmarksPage = new ntp4.BookmarksPage(); 207 bookmarksPage = new ntp4.BookmarksPage();
191 appendTilePage(bookmarksPage, localStrings.getString('bookmarksPage')); 208 appendTilePage(bookmarksPage, localStrings.getString('bookmarksPage'));
192 chrome.send('getBookmarks'); 209 chrome.send('getBookmarks');
193 } 210 }
194 211
195 /** 212 /**
196 * Simple common assertion API 213 * Simple common assertion API
197 * @param {*} condition The condition to test. Note that this may be used to 214 * @param {*} condition The condition to test. Note that this may be used to
198 * test whether a value is defined or not, and we don't want to force a 215 * test whether a value is defined or not, and we don't want to force a
199 * cast to Boolean. 216 * cast to Boolean.
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 * @param {string} title The title of the tile page. 416 * @param {string} title The title of the tile page.
400 */ 417 */
401 function appendTilePage(page, title) { 418 function appendTilePage(page, title) {
402 pageList.appendChild(page); 419 pageList.appendChild(page);
403 420
404 // Make a deep copy of the dot template to add a new one. 421 // Make a deep copy of the dot template to add a new one.
405 var newDot = new ntp4.NavDot(page, title, false, false); 422 var newDot = new ntp4.NavDot(page, title, false, false);
406 423
407 dotList.appendChild(newDot); 424 dotList.appendChild(newDot);
408 page.navigationDot = newDot; 425 page.navigationDot = newDot;
426 if (infoBubble)
427 window.setTimeout(infoBubble.reposition.bind(infoBubble), 0);
409 428
410 eventTracker.add(page, 'pagelayout', onPageLayout); 429 eventTracker.add(page, 'pagelayout', onPageLayout);
411 } 430 }
412 431
413 /** 432 /**
414 * Appends an apps page into the page list. This is like appendTilePage, 433 * Appends an apps page into the page list. This is like appendTilePage,
415 * but takes care to insert before the Bookmarks page. 434 * but takes care to insert before the Bookmarks page.
416 * TODO(csilv): Refactor this function with appendTilePage to avoid 435 * TODO(csilv): Refactor this function with appendTilePage to avoid
417 * duplication. 436 * duplication.
418 * 437 *
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 var page = e.cardSlider.currentCardValue; 606 var page = e.cardSlider.currentCardValue;
588 if (page.classList.contains('apps-page')) { 607 if (page.classList.contains('apps-page')) {
589 shownPage = templateData['apps_page_id']; 608 shownPage = templateData['apps_page_id'];
590 shownPageIndex = getAppsPageIndex(page); 609 shownPageIndex = getAppsPageIndex(page);
591 } else if (page.classList.contains('most-visited-page')) { 610 } else if (page.classList.contains('most-visited-page')) {
592 shownPage = templateData['most_visited_page_id']; 611 shownPage = templateData['most_visited_page_id'];
593 shownPageIndex = 0; 612 shownPageIndex = 0;
594 } else if (page.classList.contains('bookmarks-page')) { 613 } else if (page.classList.contains('bookmarks-page')) {
595 shownPage = templateData['bookmarks_page_id']; 614 shownPage = templateData['bookmarks_page_id'];
596 shownPageIndex = 0; 615 shownPageIndex = 0;
597 } else if (page.classList.contains('bookmarks-page')) {
598 shownPage = templateData['bookmarks_page_id'];
599 shownPageIndex = 0;
600 } else { 616 } else {
601 console.error('unknown page selected'); 617 console.error('unknown page selected');
602 } 618 }
603 chrome.send('pageSelected', [shownPage, shownPageIndex]); 619 chrome.send('pageSelected', [shownPage, shownPageIndex]);
604 620
605 // Update the active dot 621 // Update the active dot
606 var curDot = dotList.getElementsByClassName('selected')[0]; 622 var curDot = dotList.getElementsByClassName('selected')[0];
607 if (curDot) 623 if (curDot)
608 curDot.classList.remove('selected'); 624 curDot.classList.remove('selected');
609 var newPageIndex = e.cardSlider.currentCard; 625 var newPageIndex = e.cardSlider.currentCard;
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 // TODO(estade): update the content handlers to use ntp namespace instead of 733 // TODO(estade): update the content handlers to use ntp namespace instead of
718 // making these global. 734 // making these global.
719 var assert = ntp4.assert; 735 var assert = ntp4.assert;
720 var getAppsCallback = ntp4.getAppsCallback; 736 var getAppsCallback = ntp4.getAppsCallback;
721 var appsPrefChangeCallback = ntp4.appsPrefChangeCallback; 737 var appsPrefChangeCallback = ntp4.appsPrefChangeCallback;
722 var themeChanged = ntp4.themeChanged; 738 var themeChanged = ntp4.themeChanged;
723 var recentlyClosedTabs = ntp4.setRecentlyClosedTabs; 739 var recentlyClosedTabs = ntp4.setRecentlyClosedTabs;
724 var setMostVisitedPages = ntp4.setMostVisitedPages; 740 var setMostVisitedPages = ntp4.setMostVisitedPages;
725 741
726 document.addEventListener('DOMContentLoaded', ntp4.initialize); 742 document.addEventListener('DOMContentLoaded', ntp4.initialize);
OLDNEW
« no previous file with comments | « chrome/browser/resources/ntp4/new_tab.html ('k') | chrome/browser/resources/shared/css/bubble.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698