diff options
Diffstat (limited to 'addon-sdk/source/lib/sdk/places/events.js')
-rw-r--r-- | addon-sdk/source/lib/sdk/places/events.js | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/addon-sdk/source/lib/sdk/places/events.js b/addon-sdk/source/lib/sdk/places/events.js deleted file mode 100644 index a3f95ee03..000000000 --- a/addon-sdk/source/lib/sdk/places/events.js +++ /dev/null @@ -1,128 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -'use strict'; - -module.metadata = { - 'stability': 'experimental', - 'engines': { - 'Firefox': '*', - "SeaMonkey": '*' - } -}; - -const { Cc, Ci } = require('chrome'); -const { Unknown } = require('../platform/xpcom'); -const { Class } = require('../core/heritage'); -const { merge } = require('../util/object'); -const bookmarkService = Cc['@mozilla.org/browser/nav-bookmarks-service;1'] - .getService(Ci.nsINavBookmarksService); -const historyService = Cc['@mozilla.org/browser/nav-history-service;1'] - .getService(Ci.nsINavHistoryService); -const { mapBookmarkItemType } = require('./utils'); -const { EventTarget } = require('../event/target'); -const { emit } = require('../event/core'); -const { when } = require('../system/unload'); - -const emitter = EventTarget(); - -var HISTORY_ARGS = { - onBeginUpdateBatch: [], - onEndUpdateBatch: [], - onClearHistory: [], - onDeleteURI: ['url'], - onDeleteVisits: ['url', 'visitTime'], - onPageChanged: ['url', 'property', 'value'], - onTitleChanged: ['url', 'title'], - onVisit: [ - 'url', 'visitId', 'time', 'sessionId', 'referringId', 'transitionType' - ] -}; - -var HISTORY_EVENTS = { - onBeginUpdateBatch: 'history-start-batch', - onEndUpdateBatch: 'history-end-batch', - onClearHistory: 'history-start-clear', - onDeleteURI: 'history-delete-url', - onDeleteVisits: 'history-delete-visits', - onPageChanged: 'history-page-changed', - onTitleChanged: 'history-title-changed', - onVisit: 'history-visit' -}; - -var BOOKMARK_ARGS = { - onItemAdded: [ - 'id', 'parentId', 'index', 'type', 'url', 'title', 'dateAdded' - ], - onItemChanged: [ - 'id', 'property', null, 'value', 'lastModified', 'type', 'parentId' - ], - onItemMoved: [ - 'id', 'previousParentId', 'previousIndex', 'currentParentId', - 'currentIndex', 'type' - ], - onItemRemoved: ['id', 'parentId', 'index', 'type', 'url'], - onItemVisited: ['id', 'visitId', 'time', 'transitionType', 'url', 'parentId'] -}; - -var BOOKMARK_EVENTS = { - onItemAdded: 'bookmark-item-added', - onItemChanged: 'bookmark-item-changed', - onItemMoved: 'bookmark-item-moved', - onItemRemoved: 'bookmark-item-removed', - onItemVisited: 'bookmark-item-visited', -}; - -function createHandler (type, propNames) { - propNames = propNames || []; - return function (...args) { - let data = propNames.reduce((acc, prop, i) => { - if (prop) - acc[prop] = formatValue(prop, args[i]); - return acc; - }, {}); - - emit(emitter, 'data', { - type: type, - data: data - }); - }; -} - -/* - * Creates an observer, creating handlers based off of - * the `events` names, and ordering arguments from `propNames` hash - */ -function createObserverInstance (events, propNames) { - let definition = Object.keys(events).reduce((prototype, eventName) => { - prototype[eventName] = createHandler(events[eventName], propNames[eventName]); - return prototype; - }, {}); - - return Class(merge(definition, { extends: Unknown }))(); -} - -/* - * Formats `data` based off of the value of `type` - */ -function formatValue (type, data) { - if (type === 'type') - return mapBookmarkItemType(data); - if (type === 'url' && data) - return data.spec; - return data; -} - -var historyObserver = createObserverInstance(HISTORY_EVENTS, HISTORY_ARGS); -historyService.addObserver(historyObserver, false); - -var bookmarkObserver = createObserverInstance(BOOKMARK_EVENTS, BOOKMARK_ARGS); -bookmarkService.addObserver(bookmarkObserver, false); - -when(() => { - historyService.removeObserver(historyObserver); - bookmarkService.removeObserver(bookmarkObserver); -}); - -exports.events = emitter; |