| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 Defines a singleton object, md_history.BrowserService, which | 6 * @fileoverview Defines a singleton object, md_history.BrowserService, which |
| 7 * provides access to chrome.send APIs. | 7 * provides access to chrome.send APIs. |
| 8 */ | 8 */ |
| 9 | 9 |
| 10 cr.define('md_history', function() { | 10 cr.define('md_history', function() { |
| 11 /** @constructor */ | 11 /** @constructor */ |
| 12 function BrowserService() { | 12 function BrowserService() { |
| 13 /** @private {Array<!HistoryEntry>} */ | 13 /** @private {Array<!HistoryEntry>} */ |
| 14 this.pendingDeleteItems_ = null; | 14 this.pendingDeleteItems_ = null; |
| 15 /** @private {PromiseResolver} */ | 15 /** @private {PromiseResolver} */ |
| 16 this.pendingDeletePromise_ = null; | 16 this.pendingDeletePromise_ = null; |
| 17 } | 17 } |
| 18 | 18 |
| 19 BrowserService.prototype = { | 19 BrowserService.prototype = { |
| 20 /** | 20 /** |
| 21 * @param {!Array<!HistoryEntry>} items | 21 * @param {!Array<!HistoryEntry>} items |
| 22 * @return {Promise<!Array<!HistoryEntry>>} | 22 * @return {Promise<!Array<!HistoryEntry>>} |
| 23 */ | 23 */ |
| 24 deleteItems: function(items) { | 24 deleteItems: function(items) { |
| 25 if (this.pendingDeleteItems_ != null) { | 25 if (this.pendingDeleteItems_ != null) { |
| 26 // There's already a deletion in progress, reject immediately. | 26 // There's already a deletion in progress, reject immediately. |
| 27 return new Promise(function(resolve, reject) { reject(items); }); | 27 return new Promise(function(resolve, reject) { |
| 28 reject(items); |
| 29 }); |
| 28 } | 30 } |
| 29 | 31 |
| 30 var removalList = items.map(function(item) { | 32 var removalList = items.map(function(item) { |
| 31 return { | 33 return { |
| 32 url: item.url, | 34 url: item.url, |
| 33 timestamps: item.allTimestamps, | 35 timestamps: item.allTimestamps, |
| 34 }; | 36 }; |
| 35 }); | 37 }); |
| 36 | 38 |
| 37 this.pendingDeleteItems_ = items; | 39 this.pendingDeleteItems_ = items; |
| 38 this.pendingDeletePromise_ = new PromiseResolver(); | 40 this.pendingDeletePromise_ = new PromiseResolver(); |
| 39 | 41 |
| 40 chrome.send('removeVisits', removalList); | 42 chrome.send('removeVisits', removalList); |
| 41 | 43 |
| 42 return this.pendingDeletePromise_.promise; | 44 return this.pendingDeletePromise_.promise; |
| 43 }, | 45 }, |
| 44 | 46 |
| 45 /** | 47 /** |
| 46 * @param {!string} url | 48 * @param {!string} url |
| 47 */ | 49 */ |
| 48 removeBookmark: function(url) { chrome.send('removeBookmark', [url]); }, | 50 removeBookmark: function(url) { |
| 51 chrome.send('removeBookmark', [url]); |
| 52 }, |
| 49 | 53 |
| 50 /** | 54 /** |
| 51 * @param {string} sessionTag | 55 * @param {string} sessionTag |
| 52 */ | 56 */ |
| 53 openForeignSessionAllTabs: function(sessionTag) { | 57 openForeignSessionAllTabs: function(sessionTag) { |
| 54 chrome.send('openForeignSession', [sessionTag]); | 58 chrome.send('openForeignSession', [sessionTag]); |
| 55 }, | 59 }, |
| 56 | 60 |
| 57 /** | 61 /** |
| 58 * @param {string} sessionTag | 62 * @param {string} sessionTag |
| 59 * @param {number} windowId | 63 * @param {number} windowId |
| 60 * @param {number} tabId | 64 * @param {number} tabId |
| 61 * @param {MouseEvent} e | 65 * @param {MouseEvent} e |
| 62 */ | 66 */ |
| 63 openForeignSessionTab: function(sessionTag, windowId, tabId, e) { | 67 openForeignSessionTab: function(sessionTag, windowId, tabId, e) { |
| 64 chrome.send('openForeignSession', [ | 68 chrome.send('openForeignSession', [ |
| 65 sessionTag, String(windowId), String(tabId), e.button || 0, e.altKey, | 69 sessionTag, String(windowId), String(tabId), e.button || 0, e.altKey, |
| 66 e.ctrlKey, e.metaKey, e.shiftKey | 70 e.ctrlKey, e.metaKey, e.shiftKey |
| 67 ]); | 71 ]); |
| 68 }, | 72 }, |
| 69 | 73 |
| 70 /** | 74 /** |
| 71 * @param {string} sessionTag | 75 * @param {string} sessionTag |
| 72 */ | 76 */ |
| 73 deleteForeignSession: function(sessionTag) { | 77 deleteForeignSession: function(sessionTag) { |
| 74 chrome.send('deleteForeignSession', [sessionTag]); | 78 chrome.send('deleteForeignSession', [sessionTag]); |
| 75 }, | 79 }, |
| 76 | 80 |
| 77 openClearBrowsingData: function() { chrome.send('clearBrowsingData'); }, | 81 openClearBrowsingData: function() { |
| 82 chrome.send('clearBrowsingData'); |
| 83 }, |
| 78 | 84 |
| 79 /** | 85 /** |
| 80 * @param {string} histogram | 86 * @param {string} histogram |
| 81 * @param {number} value | 87 * @param {number} value |
| 82 * @param {number} max | 88 * @param {number} max |
| 83 */ | 89 */ |
| 84 recordHistogram: function(histogram, value, max) { | 90 recordHistogram: function(histogram, value, max) { |
| 85 chrome.send('metricsHandler:recordInHistogram', [histogram, value, max]); | 91 chrome.send('metricsHandler:recordInHistogram', [histogram, value, max]); |
| 86 }, | 92 }, |
| 87 | 93 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 107 | 113 |
| 108 if (successful) | 114 if (successful) |
| 109 this.pendingDeletePromise_.resolve(this.pendingDeleteItems_); | 115 this.pendingDeletePromise_.resolve(this.pendingDeleteItems_); |
| 110 else | 116 else |
| 111 this.pendingDeletePromise_.reject(this.pendingDeleteItems_); | 117 this.pendingDeletePromise_.reject(this.pendingDeleteItems_); |
| 112 | 118 |
| 113 this.pendingDeleteItems_ = null; | 119 this.pendingDeleteItems_ = null; |
| 114 this.pendingDeletePromise_ = null; | 120 this.pendingDeletePromise_ = null; |
| 115 }, | 121 }, |
| 116 | 122 |
| 117 menuPromoShown: function() { chrome.send('menuPromoShown'); }, | 123 menuPromoShown: function() { |
| 124 chrome.send('menuPromoShown'); |
| 125 }, |
| 118 }; | 126 }; |
| 119 | 127 |
| 120 cr.addSingletonGetter(BrowserService); | 128 cr.addSingletonGetter(BrowserService); |
| 121 | 129 |
| 122 return {BrowserService: BrowserService}; | 130 return {BrowserService: BrowserService}; |
| 123 }); | 131 }); |
| 124 | 132 |
| 125 /** | 133 /** |
| 126 * Called by the history backend when deletion was succesful. | 134 * Called by the history backend when deletion was succesful. |
| 127 */ | 135 */ |
| 128 function deleteComplete() { | 136 function deleteComplete() { |
| 129 md_history.BrowserService.getInstance().resolveDelete_(true); | 137 md_history.BrowserService.getInstance().resolveDelete_(true); |
| 130 } | 138 } |
| 131 | 139 |
| 132 /** | 140 /** |
| 133 * Called by the history backend when the deletion failed. | 141 * Called by the history backend when the deletion failed. |
| 134 */ | 142 */ |
| 135 function deleteFailed() { | 143 function deleteFailed() { |
| 136 md_history.BrowserService.getInstance().resolveDelete_(false); | 144 md_history.BrowserService.getInstance().resolveDelete_(false); |
| 137 } | 145 } |
| OLD | NEW |