Advertisement
Guest User

Untitled

a guest
Sep 27th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
  2. /* vim: set sts=2 sw=2 et tw=80: */
  3. "use strict";
  4.  
  5. /* global getDeveloperToolboxForContext, getLocalTabTargetForContext */
  6.  
  7. const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
  8.  
  9. Cu.import("resource://gre/modules/ExtensionUtils.jsm");
  10.  
  11. const {SingletonEventManager} = ExtensionUtils;
  12.  
  13. // Map[context => observer]
  14. let observerMap = new Map();
  15.  
  16. function getObserver(context) {
  17. let _observer = observerMap.get(context);
  18. if (!_observer) {
  19. _observer = {
  20. onNavigated: function(event, data) {
  21. if (event == "tabNavigated" && data.state == "stop") {
  22. this.emit("navigated", {url: data.url});
  23. }
  24. },
  25. };
  26. EventEmitter.decorate(_observer);
  27. const toolbox = getDeveloperToolboxForContext(context);
  28. if (!toolbox || !toolbox.target.isLocalTab) {
  29. throw new Error("unable to subscribe to the tabNavigated event for the current inspected tab");
  30. }
  31. getLocalTabTargetForContext(context, toolbox.target).then(clonedTarget => {
  32. clonedTarget.client.addListener("tabNavigated", _observer.onNavigated)
  33. observerMap.set(context, _observer);
  34. });
  35. }
  36. return _observer;
  37. }
  38. extensions.registerSchemaAPI("devtools.network", "devtools_parent", (context) => {
  39. return {
  40. devtools: {
  41. network: {
  42. onNavigated: new SingletonEventManager(context, "devtools.onNavigated", fire => {
  43. let listener = (event, data) => {
  44. context.runSafe(fire, data);
  45. };
  46.  
  47. getObserver(context).on("navigated", listener);
  48. return () => {
  49. getObserver(context).off("navigated", listener);
  50. };
  51. }).api(),
  52. },
  53. },
  54. };
  55. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement