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

Side by Side Diff: chrome/browser/resources/new_new_tab.js

Issue 4804001: Add new promotional line for NTP.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 // To avoid creating tons of unnecessary nodes. We assume we cannot fit more 5 // To avoid creating tons of unnecessary nodes. We assume we cannot fit more
6 // than this many items in the miniview. 6 // than this many items in the miniview.
7 var MAX_MINIVIEW_ITEMS = 15; 7 var MAX_MINIVIEW_ITEMS = 15;
8 8
9 // Extra spacing at the top of the layout. 9 // Extra spacing at the top of the layout.
10 var LAYOUT_SPACING_TOP = 25; 10 var LAYOUT_SPACING_TOP = 25;
(...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 // The duration of all transitions are .15s 787 // The duration of all transitions are .15s
788 window.setTimeout(f, 150); 788 window.setTimeout(f, 150);
789 } 789 }
790 } 790 }
791 791
792 // Notification 792 // Notification
793 793
794 794
795 var notificationTimeout; 795 var notificationTimeout;
796 796
797 function showNotification(text, actionText, opt_f, opt_delay) { 797 /*
798 * Displays a message (either a string or a document fragment) in the
799 * notification slot at the top of the NTP.
800 */
801 function showNotification(message, actionText, opt_f, opt_delay) {
arv (Not doing code reviews) 2010/11/24 17:28:49 /** * Displays a message in the notification slot
798 var notificationElement = $('notification'); 802 var notificationElement = $('notification');
799 var f = opt_f || function() {}; 803 var f = opt_f || function() {};
800 var delay = opt_delay || 10000; 804 var delay = opt_delay || 10000;
801 805
802 function show() { 806 function show() {
803 window.clearTimeout(notificationTimeout); 807 window.clearTimeout(notificationTimeout);
804 notificationElement.classList.add('show'); 808 notificationElement.classList.add('show');
805 document.body.classList.add('notification-shown'); 809 document.body.classList.add('notification-shown');
806 } 810 }
807 811
808 function delayedHide() { 812 function delayedHide() {
809 notificationTimeout = window.setTimeout(hideNotification, delay); 813 notificationTimeout = window.setTimeout(hideNotification, delay);
810 } 814 }
811 815
812 function doAction() { 816 function doAction() {
813 f(); 817 f();
814 hideNotification(); 818 hideNotification();
815 } 819 }
816 820
817 // Remove any possible first-run trails. 821 // Remove classList entries from previous notifications.
818 notification.classList.remove('first-run'); 822 notification.classList.remove('first-run');
823 notification.classList.remove('promo');
824
825 var notificationNode = notificationElement.firstElementChild;
826 notificationNode.removeChild(notificationNode.firstChild);
819 827
820 var actionLink = notificationElement.querySelector('.link-color'); 828 var actionLink = notificationElement.querySelector('.link-color');
821 notificationElement.firstElementChild.textContent = text; 829
830 if ((typeof message) == "string")
arv (Not doing code reviews) 2010/11/24 17:28:49 Single quotes and too many parens if (typeof mess
831 notificationElement.firstElementChild.textContent = message;
832 else
833 notificationElement.firstElementChild.appendChild(message);
834
822 actionLink.textContent = actionText; 835 actionLink.textContent = actionText;
823 836
824 actionLink.onclick = doAction; 837 actionLink.onclick = doAction;
825 actionLink.onkeydown = handleIfEnterKey(doAction); 838 actionLink.onkeydown = handleIfEnterKey(doAction);
826 notificationElement.onmouseover = show; 839 notificationElement.onmouseover = show;
827 notificationElement.onmouseout = delayedHide; 840 notificationElement.onmouseout = delayedHide;
828 actionLink.onfocus = show; 841 actionLink.onfocus = show;
829 actionLink.onblur = delayedHide; 842 actionLink.onblur = delayedHide;
830 // Enable tabbing to the link now that it is shown. 843 // Enable tabbing to the link now that it is shown.
831 actionLink.tabIndex = 0; 844 actionLink.tabIndex = 0;
(...skipping 20 matching lines...) Expand all
852 } 865 }
853 866
854 function showFirstRunNotification() { 867 function showFirstRunNotification() {
855 showNotification(localStrings.getString('firstrunnotification'), 868 showNotification(localStrings.getString('firstrunnotification'),
856 localStrings.getString('closefirstrunnotification'), 869 localStrings.getString('closefirstrunnotification'),
857 null, 30000); 870 null, 30000);
858 var notificationElement = $('notification'); 871 var notificationElement = $('notification');
859 notification.classList.add('first-run'); 872 notification.classList.add('first-run');
860 } 873 }
861 874
875 function showPromoNotification() {
876 showNotification(parseHtmlSubset(localStrings.getString('serverpromo')),
877 localStrings.getString('closefirstrunnotification'),
878 function () { chrome.send('closePromo'); },
879 60000);
880 var notificationElement = $('notification');
881 notification.classList.add('promo');
882 }
883
862 $('main').addEventListener('click', function(e) { 884 $('main').addEventListener('click', function(e) {
863 var p = e.target; 885 var p = e.target;
864 while (p && p.tagName != 'H2') { 886 while (p && p.tagName != 'H2') {
865 // In case the user clicks on a button we do not want to expand/collapse a 887 // In case the user clicks on a button we do not want to expand/collapse a
866 // section. 888 // section.
867 if (p.tagName == 'BUTTON') 889 if (p.tagName == 'BUTTON')
868 return; 890 return;
869 p = p.parentNode; 891 p = p.parentNode;
870 } 892 }
871 893
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 // Remove class name in a timeout so that changes done in this JS thread are 1205 // Remove class name in a timeout so that changes done in this JS thread are
1184 // not animated. 1206 // not animated.
1185 window.setTimeout(function() { 1207 window.setTimeout(function() {
1186 mostVisited.ensureSmallGridCorrect(); 1208 mostVisited.ensureSmallGridCorrect();
1187 maybeDoneLoading(); 1209 maybeDoneLoading();
1188 }, 1); 1210 }, 1);
1189 1211
1190 // Only show the first run notification if first run. 1212 // Only show the first run notification if first run.
1191 if (firstRun) { 1213 if (firstRun) {
1192 showFirstRunNotification(); 1214 showFirstRunNotification();
1215 } else if (localStrings.getString('serverpromo')) {
1216 showPromoNotification();
1193 } 1217 }
1194 } 1218 }
1195 1219
1196 function maybeDoneLoading() { 1220 function maybeDoneLoading() {
1197 if (mostVisited.data && apps.loaded) 1221 if (mostVisited.data && apps.loaded)
1198 document.body.classList.remove('loading'); 1222 document.body.classList.remove('loading');
1199 } 1223 }
1200 1224
1201 function isDoneLoading() { 1225 function isDoneLoading() {
1202 return !document.body.classList.contains('loading'); 1226 return !document.body.classList.contains('loading');
1203 } 1227 }
1204 1228
1205 // Initialize the apps promo. 1229 // Initialize the apps promo.
1206 document.addEventListener('DOMContentLoaded', function() { 1230 document.addEventListener('DOMContentLoaded', function() {
1207 var promoText1 = $('apps-promo-text1'); 1231 var promoText1 = $('apps-promo-text1');
1208 promoText1.innerHTML = promoText1.textContent; 1232 promoText1.innerHTML = promoText1.textContent;
1209 1233
1210 var promoLink = promoText1.querySelector('a'); 1234 var promoLink = promoText1.querySelector('a');
1211 promoLink.id = 'apps-promo-link'; 1235 promoLink.id = 'apps-promo-link';
1212 promoLink.href = localStrings.getString('web_store_url'); 1236 promoLink.href = localStrings.getString('web_store_url');
1213 1237
1214 $('apps-promo-hide').addEventListener('click', function() { 1238 $('apps-promo-hide').addEventListener('click', function() {
1215 chrome.send('hideAppsPromo', []); 1239 chrome.send('hideAppsPromo', []);
1216 document.documentElement.classList.remove('apps-promo-visible'); 1240 document.documentElement.classList.remove('apps-promo-visible');
1217 layoutSections(); 1241 layoutSections();
1218 }); 1242 });
1219 }); 1243 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/new_new_tab.css ('k') | chrome/browser/web_resource/web_resource_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698