Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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} | |
|
Rick Byers
2011/08/12 21:54:00
type doesn't match initialization to null before.
Evan Stade
2011/08/12 22:35:13
Done.
| |
| 117 */ | |
| 118 var infoBubble = null; | |
| 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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 184 CardSlider.EventType.CARD_CHANGED, | 192 CardSlider.EventType.CARD_CHANGED, |
| 185 cardChangedHandler); | 193 cardChangedHandler); |
| 186 | 194 |
| 187 cr.ui.decorate($('recently-closed-menu-button'), ntp4.RecentMenuButton); | 195 cr.ui.decorate($('recently-closed-menu-button'), ntp4.RecentMenuButton); |
| 188 chrome.send('getRecentlyClosedTabs'); | 196 chrome.send('getRecentlyClosedTabs'); |
| 189 | 197 |
| 190 mostVisitedPage = new ntp4.MostVisitedPage(); | 198 mostVisitedPage = new ntp4.MostVisitedPage(); |
| 191 appendTilePage(mostVisitedPage, localStrings.getString('mostvisited')); | 199 appendTilePage(mostVisitedPage, localStrings.getString('mostvisited')); |
| 192 chrome.send('getMostVisited'); | 200 chrome.send('getMostVisited'); |
| 193 | 201 |
| 202 if (localStrings.getString('ntp4_intro_message')) { | |
| 203 infoBubble = new cr.ui.Bubble; | |
| 204 infoBubble.attach(mostVisitedPage.navigationDot); | |
| 205 infoBubble.setText(localStrings.getString('ntp4_intro_message')); | |
| 206 infoBubble.show(); | |
| 207 | |
| 208 chrome.send('introMessageSeen'); | |
| 209 } | |
| 210 | |
| 194 bookmarksPage = new ntp4.BookmarksPage(); | 211 bookmarksPage = new ntp4.BookmarksPage(); |
| 195 appendTilePage(bookmarksPage, localStrings.getString('bookmarksPage')); | 212 appendTilePage(bookmarksPage, localStrings.getString('bookmarksPage')); |
| 196 chrome.send('getBookmarks'); | 213 chrome.send('getBookmarks'); |
| 197 } | 214 } |
| 198 | 215 |
| 199 /** | 216 /** |
| 200 * Simple common assertion API | 217 * Simple common assertion API |
| 201 * @param {*} condition The condition to test. Note that this may be used to | 218 * @param {*} condition The condition to test. Note that this may be used to |
| 202 * test whether a value is defined or not, and we don't want to force a | 219 * test whether a value is defined or not, and we don't want to force a |
| 203 * cast to Boolean. | 220 * cast to Boolean. |
| (...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 401 * @param {string} title The title of the tile page. | 418 * @param {string} title The title of the tile page. |
| 402 */ | 419 */ |
| 403 function appendTilePage(page, title) { | 420 function appendTilePage(page, title) { |
| 404 pageList.appendChild(page); | 421 pageList.appendChild(page); |
| 405 | 422 |
| 406 // Make a deep copy of the dot template to add a new one. | 423 // Make a deep copy of the dot template to add a new one. |
| 407 var newDot = new ntp4.NavDot(page, title, false, false); | 424 var newDot = new ntp4.NavDot(page, title, false, false); |
| 408 | 425 |
| 409 dotList.appendChild(newDot); | 426 dotList.appendChild(newDot); |
| 410 page.navigationDot = newDot; | 427 page.navigationDot = newDot; |
| 428 if (infoBubble) | |
| 429 window.setTimeout(infoBubble.reposition.bind(infoBubble), 0); | |
| 411 | 430 |
| 412 eventTracker.add(page, 'pagelayout', onPageLayout); | 431 eventTracker.add(page, 'pagelayout', onPageLayout); |
| 413 } | 432 } |
| 414 | 433 |
| 415 /** | 434 /** |
| 416 * Appends an apps page into the page list. This is like appendTilePage, | 435 * Appends an apps page into the page list. This is like appendTilePage, |
| 417 * but takes care to insert before the Bookmarks page. | 436 * but takes care to insert before the Bookmarks page. |
| 418 * TODO(csilv): Refactor this function with appendTilePage to avoid | 437 * TODO(csilv): Refactor this function with appendTilePage to avoid |
| 419 * duplication. | 438 * duplication. |
| 420 * | 439 * |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 589 var page = e.cardSlider.currentCardValue; | 608 var page = e.cardSlider.currentCardValue; |
| 590 if (page.classList.contains('apps-page')) { | 609 if (page.classList.contains('apps-page')) { |
| 591 shownPage = templateData['apps_page_id']; | 610 shownPage = templateData['apps_page_id']; |
| 592 shownPageIndex = getAppsPageIndex(page); | 611 shownPageIndex = getAppsPageIndex(page); |
| 593 } else if (page.classList.contains('most-visited-page')) { | 612 } else if (page.classList.contains('most-visited-page')) { |
| 594 shownPage = templateData['most_visited_page_id']; | 613 shownPage = templateData['most_visited_page_id']; |
| 595 shownPageIndex = 0; | 614 shownPageIndex = 0; |
| 596 } else if (page.classList.contains('bookmarks-page')) { | 615 } else if (page.classList.contains('bookmarks-page')) { |
| 597 shownPage = templateData['bookmarks_page_id']; | 616 shownPage = templateData['bookmarks_page_id']; |
| 598 shownPageIndex = 0; | 617 shownPageIndex = 0; |
| 599 } else if (page.classList.contains('bookmarks-page')) { | |
| 600 shownPage = templateData['bookmarks_page_id']; | |
| 601 shownPageIndex = 0; | |
| 602 } else { | 618 } else { |
| 603 console.error('unknown page selected'); | 619 console.error('unknown page selected'); |
| 604 } | 620 } |
| 605 chrome.send('pageSelected', [shownPage, shownPageIndex]); | 621 chrome.send('pageSelected', [shownPage, shownPageIndex]); |
| 606 | 622 |
| 607 // Update the active dot | 623 // Update the active dot |
| 608 var curDot = dotList.getElementsByClassName('selected')[0]; | 624 var curDot = dotList.getElementsByClassName('selected')[0]; |
| 609 if (curDot) | 625 if (curDot) |
| 610 curDot.classList.remove('selected'); | 626 curDot.classList.remove('selected'); |
| 611 var newPageIndex = e.cardSlider.currentCard; | 627 var newPageIndex = e.cardSlider.currentCard; |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 711 // TODO(estade): update the content handlers to use ntp namespace instead of | 727 // TODO(estade): update the content handlers to use ntp namespace instead of |
| 712 // making these global. | 728 // making these global. |
| 713 var assert = ntp4.assert; | 729 var assert = ntp4.assert; |
| 714 var getAppsCallback = ntp4.getAppsCallback; | 730 var getAppsCallback = ntp4.getAppsCallback; |
| 715 var appsPrefChangeCallback = ntp4.appsPrefChangeCallback; | 731 var appsPrefChangeCallback = ntp4.appsPrefChangeCallback; |
| 716 var themeChanged = ntp4.themeChanged; | 732 var themeChanged = ntp4.themeChanged; |
| 717 var recentlyClosedTabs = ntp4.setRecentlyClosedTabs; | 733 var recentlyClosedTabs = ntp4.setRecentlyClosedTabs; |
| 718 var setMostVisitedPages = ntp4.setMostVisitedPages; | 734 var setMostVisitedPages = ntp4.setMostVisitedPages; |
| 719 | 735 |
| 720 document.addEventListener('DOMContentLoaded', ntp4.initialize); | 736 document.addEventListener('DOMContentLoaded', ntp4.initialize); |
| OLD | NEW |