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

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

Issue 6313009: Add possibility to divide chrome users into groups of equal size, and change ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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) 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 771 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 } 782 }
783 el.textContent = newMessage.linktext; 783 el.textContent = newMessage.linktext;
784 content.appendChild(el); 784 content.appendChild(el);
785 fixLinkUnderline(el); 785 fixLinkUnderline(el);
786 } 786 }
787 787
788 layoutSections(); 788 layoutSections();
789 } 789 }
790 790
791 /** 791 /**
792 * Invoked when the link in the sync status section is clicked. 792 * Invoked when the link in the sync promo or sync status section is clicked.
793 */ 793 */
794 function syncSectionLinkClicked(e) { 794 function syncSectionLinkClicked(e) {
795 chrome.send('SyncLinkClicked'); 795 chrome.send('SyncLinkClicked');
796 e.preventDefault(); 796 e.preventDefault();
797 } 797 }
798 798
799 /** 799 /**
800 * Invoked when link to start sync in the promo message is clicked, and Chrome 800 * Invoked when link to start sync in the promo message is clicked, and Chrome
801 * has already been synced to an account. 801 * has already been synced to an account.
802 */ 802 */
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 var notificationTimeout; 910 var notificationTimeout;
911 911
912 /* 912 /*
913 * Displays a message (either a string or a document fragment) in the 913 * Displays a message (either a string or a document fragment) in the
914 * notification slot at the top of the NTP. 914 * notification slot at the top of the NTP.
915 * @param {string|Node} message String or node to use as message. 915 * @param {string|Node} message String or node to use as message.
916 * @param {string} actionText The text to show as a link next to the message. 916 * @param {string} actionText The text to show as a link next to the message.
917 * @param {function=} opt_f Function to call when the user clicks the action 917 * @param {function=} opt_f Function to call when the user clicks the action
918 * link. 918 * link.
919 * @param {number=} opt_delay The time in milliseconds before hiding the 919 * @param {number=} opt_delay The time in milliseconds before hiding the
920 * i notification. 920 * notification.
921 * @param {bool=} close If true, show a close link next to the notification.
arv (Not doing code reviews) 2011/01/24 18:15:11 boolean
Miranda Callahan 2011/01/24 18:39:22 Done.
921 */ 922 */
922 function showNotification(message, actionText, opt_f, opt_delay) { 923 function showNotification(message, actionText, opt_f, opt_delay, opt_close) {
arv (Not doing code reviews) 2011/01/24 18:15:11 I think we should create a component for this soon
Miranda Callahan 2011/01/24 18:39:22 Done.
923 var notificationElement = $('notification'); 924 var notificationElement = $('notification');
924 var f = opt_f || function() {}; 925 var f = opt_f || function() {};
925 var delay = opt_delay || 10000; 926 var delay = opt_delay || 10000;
926 927
927 function show() { 928 function show() {
928 window.clearTimeout(notificationTimeout); 929 window.clearTimeout(notificationTimeout);
929 notificationElement.classList.add('show'); 930 notificationElement.classList.add('show');
930 document.body.classList.add('notification-shown'); 931 document.body.classList.add('notification-shown');
931 } 932 }
932 933
933 function delayedHide() { 934 function delayedHide() {
934 notificationTimeout = window.setTimeout(hideNotification, delay); 935 notificationTimeout = window.setTimeout(hideNotification, delay);
935 } 936 }
936 937
937 function doAction() { 938 function doAction() {
938 f(); 939 f();
939 hideNotification(); 940 hideNotification();
940 } 941 }
941 942
943 function closeNotification() {
944 chrome.send('closePromo');
945 hideNotification();
946 }
947
942 // Remove classList entries from previous notifications. 948 // Remove classList entries from previous notifications.
943 notification.classList.remove('first-run'); 949 notification.classList.remove('first-run');
944 notification.classList.remove('promo'); 950 notification.classList.remove('promo');
945 951
946 var messageContainer = notificationElement.firstElementChild; 952 var messageContainer = notificationElement.firstElementChild;
947 var actionLink = notificationElement.querySelector('.link-color'); 953 var actionLink = notificationElement.querySelector('#actionlink');
954
955 if (opt_close) {
956 var closeLink = notificationElement.querySelector('#closelink');
957 closeLink.textContent =
958 localStrings.getString('closefirstrunnotification');
959 closeLink.onclick = closeNotification;
960 closeLink.onkeydown = handleIfEnterKey(closeNotification);
961 closeLink.tabIndex = 1;
962 }
948 963
949 if (typeof message == 'string') { 964 if (typeof message == 'string') {
950 messageContainer.textContent = message; 965 messageContainer.textContent = message;
951 } else { 966 } else {
952 messageContainer.textContent = ''; // Remove all children. 967 messageContainer.textContent = ''; // Remove all children.
953 messageContainer.appendChild(message); 968 messageContainer.appendChild(message);
954 } 969 }
955 970
956 actionLink.textContent = actionText; 971 actionLink.textContent = actionText;
957 972
(...skipping 10 matching lines...) Expand all
968 delayedHide(); 983 delayedHide();
969 } 984 }
970 985
971 /** 986 /**
972 * Hides the notifier. 987 * Hides the notifier.
973 */ 988 */
974 function hideNotification() { 989 function hideNotification() {
975 var notificationElement = $('notification'); 990 var notificationElement = $('notification');
976 notificationElement.classList.remove('show'); 991 notificationElement.classList.remove('show');
977 document.body.classList.remove('notification-shown'); 992 document.body.classList.remove('notification-shown');
978 var actionLink = notificationElement.querySelector('.link-color'); 993 var actionLink = notificationElement.querySelector('#actionlink');
994 var closeLink = notificationElement.querySelector('#closelink');
979 // Prevent tabbing to the hidden link. 995 // Prevent tabbing to the hidden link.
980 actionLink.tabIndex = -1; 996 actionLink.tabIndex = -1;
997 closeLink.tabIndex = -1;
981 // Setting tabIndex to -1 only prevents future tabbing to it. If, however, the 998 // Setting tabIndex to -1 only prevents future tabbing to it. If, however, the
982 // user switches window or a tab and then moves back to this tab the element 999 // user switches window or a tab and then moves back to this tab the element
983 // may gain focus. We therefore make sure that we blur the element so that the 1000 // may gain focus. We therefore make sure that we blur the element so that the
984 // element focus is not restored when coming back to this window. 1001 // element focus is not restored when coming back to this window.
985 actionLink.blur(); 1002 actionLink.blur();
1003 closeLink.blur();
986 } 1004 }
987 1005
988 function showFirstRunNotification() { 1006 function showFirstRunNotification() {
989 showNotification(localStrings.getString('firstrunnotification'), 1007 showNotification(localStrings.getString('firstrunnotification'),
990 localStrings.getString('closefirstrunnotification'), 1008 localStrings.getString('closefirstrunnotification'),
991 null, 30000); 1009 null, 30000);
992 var notificationElement = $('notification'); 1010 var notificationElement = $('notification');
993 notification.classList.add('first-run'); 1011 notification.classList.add('first-run');
994 } 1012 }
995 1013
996 function showPromoNotification() { 1014 function showPromoNotification() {
997 showNotification(parseHtmlSubset(localStrings.getString('serverpromo')), 1015 showNotification(parseHtmlSubset(localStrings.getString('serverpromo')),
998 localStrings.getString('closefirstrunnotification'), 1016 localStrings.getString('syncpromotext'),
999 function () { chrome.send('closePromo'); }, 1017 function () { chrome.send('SyncLinkClicked'); },
1000 60000); 1018 60000,
1019 true);
1001 var notificationElement = $('notification'); 1020 var notificationElement = $('notification');
1002 notification.classList.add('promo'); 1021 notification.classList.add('promo');
1003 } 1022 }
1004 1023
1005 $('main').addEventListener('click', function(e) { 1024 $('main').addEventListener('click', function(e) {
1006 var p = e.target; 1025 var p = e.target;
1007 while (p && p.tagName != 'H2') { 1026 while (p && p.tagName != 'H2') {
1008 // In case the user clicks on a button we do not want to expand/collapse a 1027 // In case the user clicks on a button we do not want to expand/collapse a
1009 // section. 1028 // section.
1010 if (p.tagName == 'BUTTON') 1029 if (p.tagName == 'BUTTON')
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 var promoLink = document.querySelector('#apps-promo-text1 a'); 1401 var promoLink = document.querySelector('#apps-promo-text1 a');
1383 promoLink.id = 'apps-promo-link'; 1402 promoLink.id = 'apps-promo-link';
1384 promoLink.href = localStrings.getString('web_store_url'); 1403 promoLink.href = localStrings.getString('web_store_url');
1385 1404
1386 $('apps-promo-hide').addEventListener('click', function() { 1405 $('apps-promo-hide').addEventListener('click', function() {
1387 chrome.send('hideAppsPromo', []); 1406 chrome.send('hideAppsPromo', []);
1388 document.documentElement.classList.remove('apps-promo-visible'); 1407 document.documentElement.classList.remove('apps-promo-visible');
1389 layoutSections(); 1408 layoutSections();
1390 }); 1409 });
1391 }); 1410 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698