| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <include src="../uber/uber_utils.js"> | 5 <include src="../uber/uber_utils.js"> |
| 6 <include src="history_focus_manager.js"> | 6 <include src="history_focus_manager.js"> |
| 7 | 7 |
| 8 /////////////////////////////////////////////////////////////////////////////// | 8 /////////////////////////////////////////////////////////////////////////////// |
| 9 // Globals: | 9 // Globals: |
| 10 /** @const */ var RESULTS_PER_PAGE = 150; | 10 /** @const */ var RESULTS_PER_PAGE = 150; |
| (...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 637 var lastVisit = this.visits_.slice(-1)[0]; | 637 var lastVisit = this.visits_.slice(-1)[0]; |
| 638 var lastDay = lastVisit ? lastVisit.dateRelativeDay : null; | 638 var lastDay = lastVisit ? lastVisit.dateRelativeDay : null; |
| 639 | 639 |
| 640 for (var i = 0, result; result = results[i]; i++) { | 640 for (var i = 0, result; result = results[i]; i++) { |
| 641 var thisDay = result.dateRelativeDay; | 641 var thisDay = result.dateRelativeDay; |
| 642 var isSameDay = lastDay == thisDay; | 642 var isSameDay = lastDay == thisDay; |
| 643 this.visits_.push(new Visit(result, isSameDay, this)); | 643 this.visits_.push(new Visit(result, isSameDay, this)); |
| 644 lastDay = thisDay; | 644 lastDay = thisDay; |
| 645 } | 645 } |
| 646 | 646 |
| 647 if (loadTimeData.getBoolean('isUserSignedIn')) { | |
| 648 var message = loadTimeData.getString( | |
| 649 info.hasSyncedResults ? 'hasSyncedResults' : 'noSyncedResults'); | |
| 650 this.view_.showNotification(message); | |
| 651 } | |
| 652 | |
| 653 this.updateSearch_(); | 647 this.updateSearch_(); |
| 654 }; | 648 }; |
| 655 | 649 |
| 656 /** | 650 /** |
| 657 * @return {number} The number of visits in the model. | 651 * @return {number} The number of visits in the model. |
| 658 */ | 652 */ |
| 659 HistoryModel.prototype.getSize = function() { | 653 HistoryModel.prototype.getSize = function() { |
| 660 return this.visits_.length; | 654 return this.visits_.length; |
| 661 }; | 655 }; |
| 662 | 656 |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1160 | 1154 |
| 1161 // Make sure that any links in the HTML are targeting the top level. | 1155 // Make sure that any links in the HTML are targeting the top level. |
| 1162 var links = bar.querySelectorAll('a'); | 1156 var links = bar.querySelectorAll('a'); |
| 1163 for (var i = 0; i < links.length; i++) | 1157 for (var i = 0; i < links.length; i++) |
| 1164 links[i].target = '_top'; | 1158 links[i].target = '_top'; |
| 1165 | 1159 |
| 1166 this.positionNotificationBar(); | 1160 this.positionNotificationBar(); |
| 1167 }; | 1161 }; |
| 1168 | 1162 |
| 1169 /** | 1163 /** |
| 1164 * Shows a notification about whether there are any synced results, and whether |
| 1165 * there are other forms of browsing history on the server. |
| 1166 * @param {boolean} hasSyncedResults Whether there are synced results. |
| 1167 * @param {boolean} includeOtherFormsOfBrowsingHistory Whether to include |
| 1168 * a sentence about the existence of other forms of browsing history. |
| 1169 */ |
| 1170 HistoryView.prototype.showWebHistoryNotification = function( |
| 1171 hasSyncedResults, includeOtherFormsOfBrowsingHistory) { |
| 1172 var message = ''; |
| 1173 |
| 1174 if (loadTimeData.getBoolean('isUserSignedIn')) { |
| 1175 message += '<span>' + loadTimeData.getString( |
| 1176 hasSyncedResults ? 'hasSyncedResults' : 'noSyncedResults') + '</span>'; |
| 1177 } |
| 1178 |
| 1179 if (includeOtherFormsOfBrowsingHistory) { |
| 1180 message += ' ' /* A whitespace to separate <span>s. */ + '<span>' + |
| 1181 loadTimeData.getString('otherFormsOfBrowsingHistory') + '</span>'; |
| 1182 } |
| 1183 |
| 1184 if (message) |
| 1185 this.showNotification(message); |
| 1186 }; |
| 1187 |
| 1188 /** |
| 1170 * @param {Visit} visit The visit about to be removed from this view. | 1189 * @param {Visit} visit The visit about to be removed from this view. |
| 1171 */ | 1190 */ |
| 1172 HistoryView.prototype.onBeforeRemove = function(visit) { | 1191 HistoryView.prototype.onBeforeRemove = function(visit) { |
| 1173 assert(this.currentVisits_.indexOf(visit) >= 0); | 1192 assert(this.currentVisits_.indexOf(visit) >= 0); |
| 1174 | 1193 |
| 1175 var rowIndex = this.focusGrid_.getRowIndexForTarget(document.activeElement); | 1194 var rowIndex = this.focusGrid_.getRowIndexForTarget(document.activeElement); |
| 1176 if (rowIndex == -1) | 1195 if (rowIndex == -1) |
| 1177 return; | 1196 return; |
| 1178 | 1197 |
| 1179 var rowToFocus = this.focusGrid_.rows[rowIndex + 1] || | 1198 var rowToFocus = this.focusGrid_.rows[rowIndex + 1] || |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1267 this.clear_(); | 1286 this.clear_(); |
| 1268 this.onModelReady(true); // Shows "No entries" message. | 1287 this.onModelReady(true); // Shows "No entries" message. |
| 1269 } | 1288 } |
| 1270 }; | 1289 }; |
| 1271 | 1290 |
| 1272 /** | 1291 /** |
| 1273 * Adjusts the position of the notification bar based on the size of the page. | 1292 * Adjusts the position of the notification bar based on the size of the page. |
| 1274 */ | 1293 */ |
| 1275 HistoryView.prototype.positionNotificationBar = function() { | 1294 HistoryView.prototype.positionNotificationBar = function() { |
| 1276 var bar = $('notification-bar'); | 1295 var bar = $('notification-bar'); |
| 1296 var container = $('top-container'); |
| 1277 | 1297 |
| 1278 // If the bar does not fit beside the editing controls, put it into the | 1298 // If the bar does not fit beside the editing controls, or if it contains |
| 1279 // overflow state. | 1299 // more than one message, put it into the overflow state. |
| 1280 if (bar.getBoundingClientRect().top >= | 1300 var shouldOverflow = |
| 1281 $('editing-controls').getBoundingClientRect().bottom) { | 1301 (bar.getBoundingClientRect().top >= |
| 1282 bar.classList.add('alone'); | 1302 $('editing-controls').getBoundingClientRect().bottom) || |
| 1283 } else { | 1303 bar.childElementCount > 1; |
| 1284 bar.classList.remove('alone'); | 1304 container.classList.toggle('overflow', shouldOverflow); |
| 1285 } | |
| 1286 }; | 1305 }; |
| 1287 | 1306 |
| 1288 /** | 1307 /** |
| 1289 * @param {!Element} el An element to look for. | 1308 * @param {!Element} el An element to look for. |
| 1290 * @return {boolean} Whether |el| is in |this.focusGrid_|. | 1309 * @return {boolean} Whether |el| is in |this.focusGrid_|. |
| 1291 */ | 1310 */ |
| 1292 HistoryView.prototype.isInFocusGrid = function(el) { | 1311 HistoryView.prototype.isInFocusGrid = function(el) { |
| 1293 return this.focusGrid_.getRowIndexForTarget(el) != -1; | 1312 return this.focusGrid_.getRowIndexForTarget(el) != -1; |
| 1294 }; | 1313 }; |
| 1295 | 1314 |
| (...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2339 /** | 2358 /** |
| 2340 * Our history system calls this function with results from searches. | 2359 * Our history system calls this function with results from searches. |
| 2341 * @param {HistoryQuery} info An object containing information about the query. | 2360 * @param {HistoryQuery} info An object containing information about the query. |
| 2342 * @param {Array<HistoryEntry>} results A list of results. | 2361 * @param {Array<HistoryEntry>} results A list of results. |
| 2343 */ | 2362 */ |
| 2344 function historyResult(info, results) { | 2363 function historyResult(info, results) { |
| 2345 historyModel.addResults(info, results); | 2364 historyModel.addResults(info, results); |
| 2346 } | 2365 } |
| 2347 | 2366 |
| 2348 /** | 2367 /** |
| 2368 * Called by the history backend after receiving results and after discovering |
| 2369 * the existence of other forms of browsing history. |
| 2370 * @param {boolean} hasSyncedResults Whether there are synced results. |
| 2371 * @param {boolean} includeOtherFormsOfBrowsingHistory Whether to include |
| 2372 * a sentence about the existence of other forms of browsing history. |
| 2373 */ |
| 2374 function showNotification( |
| 2375 hasSyncedResults, includeOtherFormsOfBrowsingHistory) { |
| 2376 historyView.showWebHistoryNotification( |
| 2377 hasSyncedResults, includeOtherFormsOfBrowsingHistory); |
| 2378 } |
| 2379 |
| 2380 /** |
| 2349 * Called by the history backend when history removal is successful. | 2381 * Called by the history backend when history removal is successful. |
| 2350 */ | 2382 */ |
| 2351 function deleteComplete() { | 2383 function deleteComplete() { |
| 2352 historyModel.deleteComplete(); | 2384 historyModel.deleteComplete(); |
| 2353 } | 2385 } |
| 2354 | 2386 |
| 2355 /** | 2387 /** |
| 2356 * Called by the history backend when history removal is unsuccessful. | 2388 * Called by the history backend when history removal is unsuccessful. |
| 2357 */ | 2389 */ |
| 2358 function deleteFailed() { | 2390 function deleteFailed() { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2370 historyView.reload(); | 2402 historyView.reload(); |
| 2371 } | 2403 } |
| 2372 | 2404 |
| 2373 // Add handlers to HTML elements. | 2405 // Add handlers to HTML elements. |
| 2374 document.addEventListener('DOMContentLoaded', load); | 2406 document.addEventListener('DOMContentLoaded', load); |
| 2375 | 2407 |
| 2376 // This event lets us enable and disable menu items before the menu is shown. | 2408 // This event lets us enable and disable menu items before the menu is shown. |
| 2377 document.addEventListener('canExecute', function(e) { | 2409 document.addEventListener('canExecute', function(e) { |
| 2378 e.canExecute = true; | 2410 e.canExecute = true; |
| 2379 }); | 2411 }); |
| OLD | NEW |