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 |