Commit e7c06246 authored by Henrik Skupin's avatar Henrik Skupin
Browse files

Bug 1830884 - [remote] Make element.sys.mjs a shared module and separate out...

Bug 1830884 - [remote] Make element.sys.mjs a shared module and separate out WebReference for Marionette only.. r=webdriver-reviewers,jdescottes

Differential Revision: https://phabricator.services.mozilla.com/D177493
parent 377ff8fb
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ remote.jar:
  content/shared/webdriver/Actions.sys.mjs (shared/webdriver/Actions.sys.mjs)
  content/shared/webdriver/Assert.sys.mjs (shared/webdriver/Assert.sys.mjs)
  content/shared/webdriver/Capabilities.sys.mjs (shared/webdriver/Capabilities.sys.mjs)
  content/shared/webdriver/Element.sys.mjs (shared/webdriver/Element.sys.mjs)
  content/shared/webdriver/Errors.sys.mjs (shared/webdriver/Errors.sys.mjs)
  content/shared/webdriver/KeyData.sys.mjs (shared/webdriver/KeyData.sys.mjs)
  content/shared/webdriver/NodeCache.sys.mjs (shared/webdriver/NodeCache.sys.mjs)
+2 −2
Original line number Diff line number Diff line
@@ -12,7 +12,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
  accessibility: "chrome://remote/content/marionette/accessibility.sys.mjs",
  action: "chrome://remote/content/shared/webdriver/Actions.sys.mjs",
  atom: "chrome://remote/content/marionette/atom.sys.mjs",
  element: "chrome://remote/content/marionette/element.sys.mjs",
  element: "chrome://remote/content/shared/webdriver/Element.sys.mjs",
  error: "chrome://remote/content/shared/webdriver/Errors.sys.mjs",
  evaluate: "chrome://remote/content/marionette/evaluate.sys.mjs",
  interaction: "chrome://remote/content/marionette/interaction.sys.mjs",
@@ -21,7 +21,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
  Log: "chrome://remote/content/shared/Log.sys.mjs",
  sandbox: "chrome://remote/content/marionette/evaluate.sys.mjs",
  Sandboxes: "chrome://remote/content/marionette/evaluate.sys.mjs",
  WebReference: "chrome://remote/content/marionette/element.sys.mjs",
  WebReference: "chrome://remote/content/marionette/web-reference.sys.mjs",
});

XPCOMUtils.defineLazyGetter(lazy, "logger", () =>
+44 −42
Original line number Diff line number Diff line
@@ -4,12 +4,6 @@

import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";

import {
  element,
  ShadowRoot,
  WebElement,
} from "chrome://remote/content/marionette/element.sys.mjs";

const lazy = {};

ChromeUtils.defineESModuleGetters(lazy, {
@@ -24,6 +18,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
  DebounceCallback: "chrome://remote/content/marionette/sync.sys.mjs",
  disableEventsActor:
    "chrome://remote/content/marionette/actors/MarionetteEventsParent.sys.mjs",
  element: "chrome://remote/content/shared/webdriver/Element.sys.mjs",
  enableEventsActor:
    "chrome://remote/content/marionette/actors/MarionetteEventsParent.sys.mjs",
  error: "chrome://remote/content/shared/webdriver/Errors.sys.mjs",
@@ -44,6 +39,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
  registerCommandsActor:
    "chrome://remote/content/marionette/actors/MarionetteCommandsParent.sys.mjs",
  RemoteAgent: "chrome://remote/content/components/RemoteAgent.sys.mjs",
  ShadowRoot: "chrome://remote/content/marionette/web-reference.sys.mjs",
  TabManager: "chrome://remote/content/shared/TabManager.sys.mjs",
  TimedPromise: "chrome://remote/content/marionette/sync.sys.mjs",
  Timeouts: "chrome://remote/content/shared/webdriver/Capabilities.sys.mjs",
@@ -55,6 +51,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
    "chrome://remote/content/shared/Navigate.sys.mjs",
  waitForObserverTopic: "chrome://remote/content/marionette/sync.sys.mjs",
  WebDriverSession: "chrome://remote/content/shared/webdriver/Session.sys.mjs",
  WebElement: "chrome://remote/content/marionette/web-reference.sys.mjs",
  windowManager: "chrome://remote/content/shared/WindowManager.sys.mjs",
  WindowState: "chrome://remote/content/marionette/browser.sys.mjs",
});
@@ -65,16 +62,21 @@ XPCOMUtils.defineLazyGetter(lazy, "logger", () =>

const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

const SUPPORTED_STRATEGIES = new Set([
  element.Strategy.ClassName,
  element.Strategy.Selector,
  element.Strategy.ID,
  element.Strategy.Name,
  element.Strategy.LinkText,
  element.Strategy.PartialLinkText,
  element.Strategy.TagName,
  element.Strategy.XPath,
]);
XPCOMUtils.defineLazyGetter(
  lazy,
  "supportedStrategies",
  () =>
    new Set([
      lazy.element.Strategy.ClassName,
      lazy.element.Strategy.Selector,
      lazy.element.Strategy.ID,
      lazy.element.Strategy.Name,
      lazy.element.Strategy.LinkText,
      lazy.element.Strategy.PartialLinkText,
      lazy.element.Strategy.TagName,
      lazy.element.Strategy.XPath,
    ])
);

// Timeout used to abort fullscreen, maximize, and minimize
// commands if no window manager is present.
@@ -1359,7 +1361,7 @@ GeckoDriver.prototype.switchToFrame = async function(cmd) {
  // Bug 1495063: Elements should be passed as WebReference reference
  let byFrame;
  if (typeof el == "string") {
    byFrame = WebElement.fromUUID(el).toJSON();
    byFrame = lazy.WebElement.fromUUID(el).toJSON();
  } else if (el) {
    byFrame = el;
  }
@@ -1402,7 +1404,7 @@ GeckoDriver.prototype.singleTap = async function(cmd) {
  lazy.assert.open(this.getBrowsingContext());

  let { id, x, y } = cmd.parameters;
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  await this.getActor().singleTap(
    webEl,
@@ -1485,7 +1487,7 @@ GeckoDriver.prototype.releaseActions = async function() {
GeckoDriver.prototype.findElement = async function(cmd) {
  const { element: el, using, value } = cmd.parameters;

  if (!SUPPORTED_STRATEGIES.has(using)) {
  if (!lazy.supportedStrategies.has(using)) {
    throw new lazy.error.InvalidSelectorError(
      `Strategy not supported: ${using}`
    );
@@ -1497,7 +1499,7 @@ GeckoDriver.prototype.findElement = async function(cmd) {

  let startNode;
  if (typeof el != "undefined") {
    startNode = WebElement.fromUUID(el).toJSON();
    startNode = lazy.WebElement.fromUUID(el).toJSON();
  }

  let opts = {
@@ -1539,7 +1541,7 @@ GeckoDriver.prototype.findElement = async function(cmd) {
GeckoDriver.prototype.findElementFromShadowRoot = async function(cmd) {
  const { shadowRoot, using, value } = cmd.parameters;

  if (!SUPPORTED_STRATEGIES.has(using)) {
  if (!lazy.supportedStrategies.has(using)) {
    throw new lazy.error.InvalidSelectorError(
      `Strategy not supported: ${using}`
    );
@@ -1551,7 +1553,7 @@ GeckoDriver.prototype.findElementFromShadowRoot = async function(cmd) {

  const opts = {
    all: false,
    startNode: ShadowRoot.fromUUID(shadowRoot).toJSON(),
    startNode: lazy.ShadowRoot.fromUUID(shadowRoot).toJSON(),
    timeout: this.currentSession.timeouts.implicit,
  };

@@ -1584,7 +1586,7 @@ GeckoDriver.prototype.findElementFromShadowRoot = async function(cmd) {
GeckoDriver.prototype.findElements = async function(cmd) {
  const { element: el, using, value } = cmd.parameters;

  if (!SUPPORTED_STRATEGIES.has(using)) {
  if (!lazy.supportedStrategies.has(using)) {
    throw new lazy.error.InvalidSelectorError(
      `Strategy not supported: ${using}`
    );
@@ -1596,7 +1598,7 @@ GeckoDriver.prototype.findElements = async function(cmd) {

  let startNode;
  if (typeof el != "undefined") {
    startNode = WebElement.fromUUID(el).toJSON();
    startNode = lazy.WebElement.fromUUID(el).toJSON();
  }

  let opts = {
@@ -1635,7 +1637,7 @@ GeckoDriver.prototype.findElements = async function(cmd) {
GeckoDriver.prototype.findElementsFromShadowRoot = async function(cmd) {
  const { shadowRoot, using, value } = cmd.parameters;

  if (!SUPPORTED_STRATEGIES.has(using)) {
  if (!lazy.supportedStrategies.has(using)) {
    throw new lazy.error.InvalidSelectorError(
      `Strategy not supported: ${using}`
    );
@@ -1647,7 +1649,7 @@ GeckoDriver.prototype.findElementsFromShadowRoot = async function(cmd) {

  const opts = {
    all: true,
    startNode: ShadowRoot.fromUUID(shadowRoot).toJSON(),
    startNode: lazy.ShadowRoot.fromUUID(shadowRoot).toJSON(),
    timeout: this.currentSession.timeouts.implicit,
  };

@@ -1688,7 +1690,7 @@ GeckoDriver.prototype.getShadowRoot = async function(cmd) {
    cmd.parameters.id,
    lazy.pprint`Expected "id" to be a string, got ${cmd.parameters.id}`
  );
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().getShadowRoot(webEl);
};
@@ -1741,7 +1743,7 @@ GeckoDriver.prototype.clickElement = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  const actor = this.getActor();

@@ -1793,7 +1795,7 @@ GeckoDriver.prototype.getElementAttribute = async function(cmd) {

  const id = lazy.assert.string(cmd.parameters.id);
  const name = lazy.assert.string(cmd.parameters.name);
  const webEl = WebElement.fromUUID(id).toJSON();
  const webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().getElementAttribute(webEl, name);
};
@@ -1827,7 +1829,7 @@ GeckoDriver.prototype.getElementProperty = async function(cmd) {

  const id = lazy.assert.string(cmd.parameters.id);
  const name = lazy.assert.string(cmd.parameters.name);
  const webEl = WebElement.fromUUID(id).toJSON();
  const webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().getElementProperty(webEl, name);
};
@@ -1859,7 +1861,7 @@ GeckoDriver.prototype.getElementText = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().getElementText(webEl);
};
@@ -1890,7 +1892,7 @@ GeckoDriver.prototype.getElementTagName = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().getElementTagName(webEl);
};
@@ -1919,7 +1921,7 @@ GeckoDriver.prototype.isElementDisplayed = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().isElementDisplayed(
    webEl,
@@ -1956,7 +1958,7 @@ GeckoDriver.prototype.getElementValueOfCssProperty = async function(cmd) {

  let id = lazy.assert.string(cmd.parameters.id);
  let prop = lazy.assert.string(cmd.parameters.propertyName);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().getElementValueOfCssProperty(webEl, prop);
};
@@ -1987,7 +1989,7 @@ GeckoDriver.prototype.isElementEnabled = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().isElementEnabled(
    webEl,
@@ -2019,7 +2021,7 @@ GeckoDriver.prototype.isElementSelected = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().isElementSelected(
    webEl,
@@ -2044,7 +2046,7 @@ GeckoDriver.prototype.getElementRect = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().getElementRect(webEl);
};
@@ -2075,7 +2077,7 @@ GeckoDriver.prototype.sendKeysToElement = async function(cmd) {

  let id = lazy.assert.string(cmd.parameters.id);
  let text = lazy.assert.string(cmd.parameters.text);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().sendKeysToElement(
    webEl,
@@ -2107,7 +2109,7 @@ GeckoDriver.prototype.clearElement = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  await this.getActor().clearElement(webEl);
};
@@ -2463,7 +2465,7 @@ GeckoDriver.prototype.takeScreenshot = async function(cmd) {
  full = typeof full == "undefined" ? true : full;
  scroll = typeof scroll == "undefined" ? true : scroll;

  let webEl = id ? WebElement.fromUUID(id).toJSON() : null;
  let webEl = id ? lazy.WebElement.fromUUID(id).toJSON() : null;

  // Only consider full screenshot if no element has been specified
  full = webEl ? false : full;
@@ -3260,7 +3262,7 @@ GeckoDriver.prototype.getComputedLabel = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();

  return this.getActor().getComputedLabel(webEl);
};
@@ -3281,7 +3283,7 @@ GeckoDriver.prototype.getComputedRole = async function(cmd) {
  await this._handleUserPrompts();

  let id = lazy.assert.string(cmd.parameters.id);
  let webEl = WebElement.fromUUID(id).toJSON();
  let webEl = lazy.WebElement.fromUUID(id).toJSON();
  return this.getActor().getComputedRole(webEl);
};

+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@ const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
  accessibility: "chrome://remote/content/marionette/accessibility.sys.mjs",
  atom: "chrome://remote/content/marionette/atom.sys.mjs",
  element: "chrome://remote/content/marionette/element.sys.mjs",
  element: "chrome://remote/content/shared/webdriver/Element.sys.mjs",
  error: "chrome://remote/content/shared/webdriver/Errors.sys.mjs",
  event: "chrome://remote/content/marionette/event.sys.mjs",
  Log: "chrome://remote/content/shared/Log.sys.mjs",
+1 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@ remote.jar:
  content/marionette/cert.sys.mjs (cert.sys.mjs)
  content/marionette/cookie.sys.mjs (cookie.sys.mjs)
  content/marionette/driver.sys.mjs (driver.sys.mjs)
  content/marionette/element.sys.mjs (element.sys.mjs)
  content/marionette/evaluate.sys.mjs (evaluate.sys.mjs)
  content/marionette/event.sys.mjs  (event.sys.mjs)
  content/marionette/interaction.sys.mjs (interaction.sys.mjs)
@@ -37,6 +36,7 @@ remote.jar:
  content/marionette/stream-utils.sys.mjs (stream-utils.sys.mjs)
  content/marionette/sync.sys.mjs (sync.sys.mjs)
  content/marionette/transport.sys.mjs (transport.sys.mjs)
  content/marionette/web-reference.sys.mjs (web-reference.sys.mjs)
#ifdef ENABLE_TESTS
  content/marionette/test_dialog.dtd (chrome/test_dialog.dtd)
  content/marionette/test_dialog.properties (chrome/test_dialog.properties)
Loading