gecko-dev/devtools/shared/fronts/stylesheets.js
Alexandre Poirot a0066e8731 Bug 1515862 - Remove Front's form argument. r=jdescottes
Now that form argument is no longer used by any front to set its actor ID,
we can remove this argument.

Have a particular look at:
* devtools/client/shared/test/test-actor-registry.js
which was the last Front to be manually instantiated and need some tweaks,
* canvas head.js to create canvas front via getFront,
* RDM manager.js, which requires the EmulationFront to be self managed.

Depends on D17615

Differential Revision: https://phabricator.services.mozilla.com/D17616

--HG--
extra : moz-landing-system : lando
2019-01-28 18:42:52 +00:00

152 lines
3.7 KiB
JavaScript

/* 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";
const { FrontClassWithSpec, registerFront } = require("devtools/shared/protocol");
const {
mediaRuleSpec,
styleSheetSpec,
styleSheetsSpec,
} = require("devtools/shared/specs/stylesheets");
const promise = require("promise");
loader.lazyRequireGetter(this, "getIndentationFromPrefs",
"devtools/shared/indentation", true);
loader.lazyRequireGetter(this, "getIndentationFromString",
"devtools/shared/indentation", true);
/**
* Corresponding client-side front for a MediaRuleActor.
*/
class MediaRuleFront extends FrontClassWithSpec(mediaRuleSpec) {
constructor(client) {
super(client);
this._onMatchesChange = this._onMatchesChange.bind(this);
this.on("matches-change", this._onMatchesChange);
}
_onMatchesChange(matches) {
this._form.matches = matches;
}
form(form) {
this.actorID = form.actor;
this._form = form;
}
get mediaText() {
return this._form.mediaText;
}
get conditionText() {
return this._form.conditionText;
}
get matches() {
return this._form.matches;
}
get line() {
return this._form.line || -1;
}
get column() {
return this._form.column || -1;
}
get parentStyleSheet() {
return this.conn.getActor(this._form.parentStyleSheet);
}
}
exports.MediaRuleFront = MediaRuleFront;
registerFront(MediaRuleFront);
/**
* StyleSheetFront is the client-side counterpart to a StyleSheetActor.
*/
class StyleSheetFront extends FrontClassWithSpec(styleSheetSpec) {
constructor(conn, form) {
super(conn, form);
this._onPropertyChange = this._onPropertyChange.bind(this);
this.on("property-change", this._onPropertyChange);
}
destroy() {
this.off("property-change", this._onPropertyChange);
super.destroy();
}
_onPropertyChange(property, value) {
this._form[property] = value;
}
form(form) {
this.actorID = form.actor;
this._form = form;
}
get href() {
return this._form.href;
}
get nodeHref() {
return this._form.nodeHref;
}
get disabled() {
return !!this._form.disabled;
}
get title() {
return this._form.title;
}
get isSystem() {
return this._form.system;
}
get styleSheetIndex() {
return this._form.styleSheetIndex;
}
get ruleCount() {
return this._form.ruleCount;
}
get sourceMapURL() {
return this._form.sourceMapURL;
}
/**
* Get the indentation to use for edits to this style sheet.
*
* @return {Promise} A promise that will resolve to a string that
* should be used to indent a block in this style sheet.
*/
guessIndentation() {
const prefIndent = getIndentationFromPrefs();
if (prefIndent) {
const {indentUnit, indentWithTabs} = prefIndent;
return promise.resolve(indentWithTabs ? "\t" : " ".repeat(indentUnit));
}
return (async function() {
const longStr = await this.getText();
const source = await longStr.string();
const {indentUnit, indentWithTabs} = getIndentationFromString(source);
return indentWithTabs ? "\t" : " ".repeat(indentUnit);
}.bind(this))();
}
}
exports.StyleSheetFront = StyleSheetFront;
registerFront(StyleSheetFront);
/**
* The corresponding Front object for the StyleSheetsActor.
*/
class StyleSheetsFront extends FrontClassWithSpec(styleSheetsSpec) {
constructor(client) {
super(client);
// Attribute name from which to retrieve the actorID out of the target actor's form
this.formAttributeName = "styleSheetsActor";
}
}
exports.StyleSheetsFront = StyleSheetsFront;
registerFront(StyleSheetsFront);