Bug 1453385 - Remove NodeActor custom form attributes. r=Honza draft
authorAlexandre Poirot <poirot.alex@gmail.com>
Wed, 11 Apr 2018 08:54:27 -0700
changeset 781939 997159e65ef2828d1259fa8003c332e0252e5114
parent 781938 6c0db50fca68d786637418f1088b418b583595a4
child 781940 b0709b05690ca59c34c9bbb76f12a370c4660862
push id106451
push userbmo:poirot.alex@gmail.com
push dateFri, 13 Apr 2018 20:48:33 +0000
reviewersHonza
bugs1453385, 1036949
milestone61.0a1
Bug 1453385 - Remove NodeActor custom form attributes. r=Honza This feature introduced in bug 1036949 is not longer used as it was designed for XUL add-ons. The setFormProperty method was prevently Node's form from getting correctly serialized between processes. MozReview-Commit-ID: AiNnHSkwsEM
devtools/client/inspector/markup/test/actor_events_form.js
devtools/client/inspector/markup/test/browser.ini
devtools/client/inspector/markup/test/browser_markup_events_form.js
devtools/client/inspector/markup/test/doc_markup_events_form.html
devtools/server/actors/inspector/node.js
devtools/shared/fronts/node.js
deleted file mode 100644
--- a/devtools/client/inspector/markup/test/actor_events_form.js
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Any copyright is dedicated to the Public Domain.
-   http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// This test actor is used for testing the addition of custom form data
-// on NodeActor. Custom form property is set when 'form' event is sent
-// by NodeActor actor (see 'onNodeActorForm' method).
-
-const EventEmitter = require("devtools/shared/event-emitter");
-const {ActorClassWithSpec, Actor, FrontClassWithSpec, Front, generateActorSpec} =
-  require("devtools/shared/protocol");
-
-const {NodeActor} = require("devtools/server/actors/inspector/node");
-
-var eventsSpec = generateActorSpec({
-  typeName: "eventsFormActor",
-
-  methods: {
-    attach: {
-      request: {},
-      response: {}
-    },
-    detach: {
-      request: {},
-      response: {}
-    }
-  }
-});
-
-var EventsFormActor = ActorClassWithSpec(eventsSpec, {
-  initialize: function() {
-    Actor.prototype.initialize.apply(this, arguments);
-  },
-
-  attach: function() {
-    EventEmitter.on(NodeActor, "form", this.onNodeActorForm);
-  },
-
-  detach: function() {
-    EventEmitter.off(NodeActor, "form", this.onNodeActorForm);
-  },
-
-  onNodeActorForm: function(event) {
-    let nodeActor = event.target;
-    if (nodeActor.rawNode.id == "container") {
-      let form = event.data;
-      form.setFormProperty("test-property", "test-value");
-    }
-  }
-});
-
-var EventsFormFront = FrontClassWithSpec(eventsSpec, {
-  initialize: function(client, form) {
-    Front.prototype.initialize.apply(this, arguments);
-
-    this.actorID = form[EventsFormActor.prototype.typeName];
-    this.manage(this);
-  }
-});
-
-exports.EventsFormFront = EventsFormFront;
--- a/devtools/client/inspector/markup/test/browser.ini
+++ b/devtools/client/inspector/markup/test/browser.ini
@@ -1,23 +1,21 @@
 [DEFAULT]
 tags = devtools
 subsuite = devtools
 support-files =
-  actor_events_form.js
   doc_markup_anonymous.html
   doc_markup_dragdrop.html
   doc_markup_dragdrop_autoscroll_01.html
   doc_markup_dragdrop_autoscroll_02.html
   doc_markup_edit.html
   doc_markup_events_01.html
   doc_markup_events_02.html
   doc_markup_events_03.html
   doc_markup_events_04.html
-  doc_markup_events_form.html
   doc_markup_events_jquery.html
   doc_markup_events-overflow.html
   doc_markup_events_react_development_15.4.1.html
   doc_markup_events_react_development_15.4.1_jsx.html
   doc_markup_events_react_production_15.3.1.html
   doc_markup_events_react_production_15.3.1_jsx.html
   doc_markup_events_react_production_16.2.0.html
   doc_markup_events_react_production_16.2.0_jsx.html
@@ -107,17 +105,16 @@ skip-if = (os == 'linux' && bits == 32 &
 [browser_markup_dragdrop_invalidNodes.js]
 [browser_markup_dragdrop_reorder.js]
 [browser_markup_dragdrop_tooltip.js]
 [browser_markup_events_01.js]
 [browser_markup_events_02.js]
 [browser_markup_events_03.js]
 [browser_markup_events_04.js]
 [browser_markup_events_click_to_close.js]
-[browser_markup_events_form.js]
 [browser_markup_events_jquery_1.0.js]
 [browser_markup_events_jquery_1.1.js]
 [browser_markup_events_jquery_1.2.js]
 [browser_markup_events_jquery_1.3.js]
 [browser_markup_events_jquery_1.4.js]
 [browser_markup_events_jquery_1.6.js]
 [browser_markup_events_jquery_1.7.js]
 [browser_markup_events_jquery_1.11.1.js]
deleted file mode 100644
--- a/devtools/client/inspector/markup/test/browser_markup_events_form.js
+++ /dev/null
@@ -1,59 +0,0 @@
-/* vim: set ts=2 et sw=2 tw=80: */
-/* Any copyright is dedicated to the Public Domain.
- http://creativecommons.org/publicdomain/zero/1.0/ */
-
-"use strict";
-
-// Testing the feature whereby custom registered actors can listen to
-// 'form' events sent by the NodeActor to hook custom data to it.
-// The test registers one backend actor providing custom form data
-// and checks that the value is properly sent to the client (NodeFront).
-
-const TEST_PAGE_URL = URL_ROOT + "doc_markup_events_form.html";
-const TEST_ACTOR_URL = CHROME_URL_ROOT + "actor_events_form.js";
-
-var {EventsFormFront} = require(TEST_ACTOR_URL);
-
-add_task(async function() {
-  info("Opening the Toolbox");
-  let tab = await addTab(TEST_PAGE_URL);
-  let toolbox = await openToolboxForTab(tab, "webconsole");
-
-  info("Registering test actor");
-  let {registrar, front} = await registerTestActor(toolbox);
-
-  info("Selecting the Inspector panel");
-  let inspector = await toolbox.selectTool("inspector");
-  let container = await getContainerForSelector("#container", inspector);
-  isnot(container, null, "There must be requested container");
-
-  let nodeFront = container.node;
-  let value = nodeFront.getFormProperty("test-property");
-  is(value, "test-value", "There must be custom property");
-
-  info("Unregistering actor");
-  await unregisterActor(registrar, front);
-});
-
-function registerTestActor(toolbox) {
-  let options = {
-    prefix: "eventsFormActor",
-    actorClass: "EventsFormActor",
-    moduleUrl: TEST_ACTOR_URL,
-  };
-
-  // Register as a tab actor
-  let client = toolbox.target.client;
-  return new Promise(resolve => {
-    registerTabActor(client, options).then(({registrar, form}) => {
-      // Attach to the registered actor
-      let front = EventsFormFront(client, form);
-      front.attach().then(() => {
-        resolve({
-          front: front,
-          registrar: registrar,
-        });
-      });
-    });
-  });
-}
deleted file mode 100644
--- a/devtools/client/inspector/markup/test/doc_markup_events_form.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE html>
-<html>
-  <head>
-    <meta charset="utf-8">
-    <style>
-    </style>
-  </head>
-  <body>
-    <div id="container">
-  </body>
-</html>
--- a/devtools/server/actors/inspector/node.js
+++ b/devtools/server/actors/inspector/node.js
@@ -23,18 +23,16 @@ loader.lazyRequireGetter(this, "isShadow
 loader.lazyRequireGetter(this, "isAnonymous", "devtools/shared/layout/utils", true);
 
 loader.lazyRequireGetter(this, "InspectorActorUtils", "devtools/server/actors/inspector/utils");
 loader.lazyRequireGetter(this, "LongStringActor", "devtools/server/actors/string", true);
 loader.lazyRequireGetter(this, "getFontPreviewData", "devtools/server/actors/styles", true);
 loader.lazyRequireGetter(this, "CssLogic", "devtools/server/actors/inspector/css-logic", true);
 loader.lazyRequireGetter(this, "EventParsers", "devtools/server/actors/inspector/event-parsers", true);
 
-const EventEmitter = require("devtools/shared/event-emitter");
-
 const PSEUDO_CLASSES = [":hover", ":active", ":focus"];
 const FONT_FAMILY_PREVIEW_TEXT = "The quick brown fox jumps over the lazy dog";
 const FONT_FAMILY_PREVIEW_TEXT_SIZE = 20;
 
 /**
  * Server side of the node actor.
  */
 const NodeActor = protocol.ActorClassWithSpec(nodeSpec, {
@@ -133,32 +131,16 @@ const NodeActor = protocol.ActorClassWit
         this.rawNode.ownerDocument.contentType === "text/html",
       hasEventListeners: this._hasEventListeners,
     };
 
     if (this.isDocumentElement()) {
       form.isDocumentElement = true;
     }
 
-    // Add an extra API for custom properties added by other
-    // modules/extensions.
-    form.setFormProperty = (name, value) => {
-      if (!form.props) {
-        form.props = {};
-      }
-      form.props[name] = value;
-    };
-
-    // Fire an event so, other modules can create its own properties
-    // that should be passed to the client (within the form.props field).
-    EventEmitter.emit(NodeActor, "form", {
-      target: this,
-      data: form
-    });
-
     return form;
   },
 
   /**
    * Watch the given document node for mutations using the DOM observer
    * API.
    */
   watchDocument: function(doc, callback) {
--- a/devtools/shared/fronts/node.js
+++ b/devtools/shared/fronts/node.js
@@ -372,30 +372,16 @@ const NodeFront = FrontClassWithSpec(nod
     }
 
     let str = this._form.nodeValue || "";
     return promise.resolve(new SimpleStringFront(str));
   }, {
     impl: "_getNodeValue"
   }),
 
-  // Accessors for custom form properties.
-
-  getFormProperty: function(name) {
-    return this._form.props ? this._form.props[name] : null;
-  },
-
-  hasFormProperty: function(name) {
-    return this._form.props ? (name in this._form.props) : null;
-  },
-
-  get formProperties() {
-    return this._form.props;
-  },
-
   /**
    * Return a new AttributeModificationList for this node.
    */
   startModifyingAttributes: function() {
     return new AttributeModificationList(this);
   },
 
   _cacheAttributes: function() {