--- a/dom/interfaces/base/nsIFocusManager.idl+++ b/dom/interfaces/base/nsIFocusManager.idl@@ -2,17 +2,18 @@ /* 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/. */ #include "domstubs.idl" interface mozIDOMWindowProxy; interface nsIDocument;-interface nsIContent;++webidl Element; [scriptable, uuid(86e1f1e1-365d-493b-b52a-a649f3f311dc)] /** * The focus manager deals with all focus related behaviour. Only one element * in the entire application may have the focus at a time; this element * receives any keyboard events. While there is only one application-wide * focused element, each nsIDOMWindow maintains a reference to the element * that would be focused if the window was active.@@ -76,17 +77,17 @@ interface nsIFocusManager : nsISupports * element. */ uint32_t getLastFocusMethod(in mozIDOMWindowProxy window); /** * Changes the focused element reference within the window containing * aElement to aElement. */- void setFocus(in nsIDOMElement aElement, in unsigned long aFlags);+ void setFocus(in Element aElement, in unsigned long aFlags); /** * Move the focus to another element. If aStartElement is specified, then * movement is done relative to aStartElement. If aStartElement is null, * then movement is done relative to the currently focused element. If no * element is focused, focus the first focusable element within the * document (or the last focusable element if aType is MOVEFOCUS_END). This * method is equivalent to setting the focusedElement to the new element.@@ -96,19 +97,19 @@ interface nsIFocusManager : nsISupports * * If no element is found, and aType is either MOVEFOCUS_ROOT or * MOVEFOCUS_CARET, then the focus is cleared. If aType is any other value, * the focus is not changed. * * Returns the element that was focused. The return value may be null if focus * was moved into a child process. */- nsIDOMElement moveFocus(in mozIDOMWindowProxy aWindow,- in nsIDOMElement aStartElement,- in unsigned long aType, in unsigned long aFlags);+ Element moveFocus(in mozIDOMWindowProxy aWindow,+ in Element aStartElement,+ in unsigned long aType, in unsigned long aFlags); /** * Clears the focused element within aWindow. If the current focusedWindow * is a descendant of aWindow, sets the current focusedWindow to aWindow. * * @throws NS_ERROR_INVALID_ARG if aWindow is null */ void clearFocus(in mozIDOMWindowProxy aWindow);@@ -137,17 +138,17 @@ interface nsIFocusManager : nsISupports /** * Moves the selection caret within aWindow to the current focus. */ void moveCaretToFocus(in mozIDOMWindowProxy aWindow); /*** * Check if given element is focusable. */- boolean elementIsFocusable(in nsIDOMElement aElement, in unsigned long aFlags);+ boolean elementIsFocusable(in Element aElement, in unsigned long aFlags); /* * Raise the window when switching focus */ const unsigned long FLAG_RAISE = 1; /** * Do not scroll the element to focus into view@@ -260,17 +261,17 @@ interface nsIFocusManager : nsISupports */ [noscript] void fireDelayedEvents(in nsIDocument aDocument); /** * Indicate that a plugin wishes to take the focus. This is similar to a * normal focus except that the widget focus is not changed. Updating the * widget focus state is the responsibility of the caller. */- [noscript] void focusPlugin(in nsIContent aPlugin);+ [noscript] void focusPlugin(in Element aPlugin); /** * Used in a child process to indicate that the parent window is now * active or deactive. */ [noscript] void parentActivated(in mozIDOMWindowProxy aWindow, in bool active); };

--- a/js/src/builtin/ModuleObject.cpp+++ b/js/src/builtin/ModuleObject.cpp@@ -807,17 +807,18 @@ ModuleObject::initialEnvironment() const { Value value = getReservedSlot(EnvironmentSlot); return value.toObject().as<ModuleEnvironmentObject>(); } ModuleEnvironmentObject* ModuleObject::environment() const {- MOZ_ASSERT(!hadEvaluationError());+ // Note that this it's valid to call this even if there was an error+ // evaluating the module. // According to the spec the environment record is created during // instantiation, but we create it earlier than that. if (status() < MODULE_STATUS_INSTANTIATED) return nullptr; return &initialEnvironment(); }

new file mode 100644--- /dev/null+++ b/layout/style/CSSPropFlags.h@@ -0,0 +1,58 @@+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */+/* vim: set ts=8 sts=2 et sw=2 tw=80: */+/* 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/. */++#ifndef mozilla_CSSPropFlags_h+#define mozilla_CSSPropFlags_h++#include "mozilla/TypedEnumBits.h"++namespace mozilla {++enum class CSSPropFlags : uint8_t+{+ // This property is not parsed. It is only there for internal use like+ // attribute mapping.+ Inaccessible = 1 << 0,++ // This property's getComputedStyle implementation requires layout to+ // be flushed.+ GetCSNeedsLayoutFlush = 1 << 1,++ // The following two flags along with the pref defines where the this+ // property can be used:+ // * If none of the two flags is presented, the pref completely controls+ // the availability of this property. And in that case, if it has no+ // pref, this property is usable everywhere.+ // * If any of the flags is set, this property is always enabled in the+ // specific contexts regardless of the value of the pref. If there is+ // no pref for this property at all in this case, it is an internal-+ // only property, which cannot be used anywhere else, and should be+ // wrapped in "#ifndef CSS_PROP_LIST_EXCLUDE_INTERNAL".+ // Note that, these flags have no effect on the use of aliases of this+ // property.+ // Furthermore, for the purposes of animation (including triggering+ // transitions) these flags are ignored. That is, if the property is disabled+ // by a pref, we will *not* run animations or transitions on it even in+ // UA sheets or chrome.+ EnabledInUASheets = 1 << 2,+ EnabledInChrome = 1 << 3,+ EnabledInUASheetsAndChrome = EnabledInUASheets | EnabledInChrome,+ EnabledMask = EnabledInUASheetsAndChrome,++ // This property can be animated on the compositor.+ CanAnimateOnCompositor = 1 << 4,++ // This property is an internal property that is not represented in+ // the DOM. Properties with this flag are defined in an #ifndef+ // CSS_PROP_LIST_EXCLUDE_INTERNAL section.+ Internal = 1 << 5,+};++MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(CSSPropFlags)++} // namespace mozilla++#endif // mozilla_CSSPropFlags_h