/* 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";

/**
 * Set dom.webcomponents.shadowdom.enabled pref to true and loads an iframe, to
 * ensure that the Element instance is loaded with the correct value of the
 * preference.
 *
 * @return {Promise} promise that resolves when iframe is loaded.
 */
function setShadowDOMPrefAndCreateIframe(aSrcDoc) {
  return new Promise(function (aResolve, aReject) {
    SpecialPowers.pushPrefEnv({
      set: [
        ["dom.webcomponents.shadowdom.enabled", true]
      ]
    }, () => {
      let iframe = document.createElement("iframe");
      iframe.onload = function () { aResolve(iframe.contentDocument); }
      iframe.onerror = function () { aReject('Failed to load iframe'); }
      if (aSrcDoc) {
        iframe.srcdoc = aSrcDoc;
      }
      document.body.appendChild(iframe);
    });
  });
}
