[email protected] | 8f857ef8 | 2014-06-04 23:46:16 | [diff] [blame] | 1 | // Copyright 2014 The Chromium Authors. All rights reserved. |
[email protected] | 68e63ea1 | 2013-06-05 05:00:54 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | // Special unload event. We don't use the DOM unload because that slows down |
| 6 | // tab shutdown. On the other hand, onUnload might not always fire, since |
| 7 | // Chrome will terminate renderers on shutdown (SuddenTermination). |
| 8 | |
| 9 | // Implement a primitive subset of the Event interface as needed, since if this |
| 10 | // was to use the real event object there would be a circular dependency. |
| 11 | var listeners = []; |
| 12 | |
| 13 | exports.addListener = function(listener) { |
[email protected] | 31bbfd7 | 2013-06-22 02:35:54 | [diff] [blame] | 14 | $Array.push(listeners, listener); |
[email protected] | 68e63ea1 | 2013-06-05 05:00:54 | [diff] [blame] | 15 | }; |
| 16 | |
| 17 | exports.removeListener = function(listener) { |
| 18 | for (var i = 0; i < listeners.length; ++i) { |
| 19 | if (listeners[i] == listener) { |
[email protected] | 31bbfd7 | 2013-06-22 02:35:54 | [diff] [blame] | 20 | $Array.splice(listeners, i, 1); |
[email protected] | 68e63ea1 | 2013-06-05 05:00:54 | [diff] [blame] | 21 | return; |
| 22 | } |
| 23 | } |
| 24 | }; |
| 25 | |
| 26 | exports.wasDispatched = false; |
| 27 | |
| 28 | // dispatch() is called from C++. |
| 29 | exports.dispatch = function() { |
| 30 | exports.wasDispatched = true; |
| 31 | for (var i = 0; i < listeners.length; ++i) |
| 32 | listeners[i](); |
| 33 | }; |