Bug 1279218 - Remove Applet tag; r=bz
authorKyle Machulis <kyle@nonpolynomial.com>
Mon, 10 Jul 2017 16:00:30 -0700
changeset 420636 e6f1f895449d428accf0c6bac03d75a449d58d17
parent 420635 00af61b0dd2ff664ecc4b23d668219505930ee92
child 420637 1d9ee33174d561265fb9d279ffcf31e9fc3e3863
push id7566
push usermtabara@mozilla.com
push dateWed, 02 Aug 2017 08:25:16 +0000
treeherdermozilla-beta@86913f512c3c [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbz
bugs1279218
milestone56.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1279218 - Remove Applet tag; r=bz Removes applet tag interfaces, and changes HTML5 parser to output HTMLUnknownElement when tag is found. Removes tag process from various places in the browser. MozReview-Commit-ID: 2zHhK2U2esX
addon-sdk/source/lib/sdk/content/context-menu.js
browser/base/content/nsContextMenu.js
docshell/base/nsDocShellTreeOwner.cpp
dom/base/nsObjectLoadingContent.cpp
dom/bindings/BindingUtils.cpp
dom/bindings/Bindings.conf
dom/bindings/Configuration.py
dom/html/HTMLObjectElement.cpp
dom/html/HTMLSharedObjectElement.cpp
dom/html/HTMLSharedObjectElement.h
dom/interfaces/html/moz.build
dom/interfaces/html/nsIDOMHTMLAppletElement.idl
dom/plugins/base/nsPluginInstanceOwner.cpp
dom/webidl/HTMLAppletElement.webidl
dom/webidl/moz.build
layout/base/nsCSSFrameConstructor.cpp
parser/htmlparser/nsHTMLTagList.h
testing/web-platform/meta/dom/nodes/Node-cloneNode.html.ini
testing/web-platform/meta/html/dom/documents/dom-tree-accessors/nameditem-03.html.ini
testing/web-platform/meta/html/dom/interfaces.html.ini
testing/web-platform/meta/html/dom/reflection-obsolete.html.ini
testing/web-platform/meta/html/semantics/interfaces.html.ini
xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
--- a/addon-sdk/source/lib/sdk/content/context-menu.js
+++ b/addon-sdk/source/lib/sdk/content/context-menu.js
@@ -73,17 +73,16 @@ function getSelection(window) {
   return node.value.substring(node.selectionStart, node.selectionEnd);
 }
 
 //These are used by PageContext.isCurrent below. If the popupNode or any of
 //its ancestors is one of these, Firefox uses a tailored context menu, and so
 //the page context doesn't apply.
 const NON_PAGE_CONTEXT_ELTS = [
   Ci.nsIDOMHTMLAnchorElement,
-  Ci.nsIDOMHTMLAppletElement,
   Ci.nsIDOMHTMLAreaElement,
   Ci.nsIDOMHTMLButtonElement,
   Ci.nsIDOMHTMLCanvasElement,
   Ci.nsIDOMHTMLEmbedElement,
   Ci.nsIDOMHTMLImageElement,
   Ci.nsIDOMHTMLInputElement,
   Ci.nsIDOMHTMLMapElement,
   Ci.nsIDOMHTMLMediaElement,
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -864,18 +864,17 @@ nsContextMenu.prototype = {
         }
         if (computedURL) {
           this.hasBGImage = true;
           this.bgImageURL = makeURLAbsolute(bodyElt.baseURI,
                                             computedURL);
         }
       }
     } else if ((this.target instanceof HTMLEmbedElement ||
-              this.target instanceof HTMLObjectElement ||
-              this.target instanceof HTMLAppletElement) &&
+              this.target instanceof HTMLObjectElement) &&
              this.target.displayedType == HTMLObjectElement.TYPE_NULL &&
              this.target.pluginFallbackType == HTMLObjectElement.PLUGIN_CLICK_TO_PLAY) {
       this.onCTPPlugin = true;
     }
 
     this.canSpellCheck = this._isSpellCheckEnabled(this.target);
   },
 
--- a/docshell/base/nsDocShellTreeOwner.cpp
+++ b/docshell/base/nsDocShellTreeOwner.cpp
@@ -37,17 +37,16 @@
 #include "mozilla/dom/SVGTitleElement.h"
 #include "nsIDOMEvent.h"
 #include "nsIDOMFileList.h"
 #include "nsIDOMMouseEvent.h"
 #include "nsIFormControl.h"
 #include "nsIDOMHTMLInputElement.h"
 #include "nsIDOMHTMLTextAreaElement.h"
 #include "nsIDOMHTMLHtmlElement.h"
-#include "nsIDOMHTMLAppletElement.h"
 #include "nsIDOMHTMLObjectElement.h"
 #include "nsIDOMHTMLEmbedElement.h"
 #include "nsIDOMHTMLDocument.h"
 #include "nsIImageLoadingContent.h"
 #include "nsIWebNavigation.h"
 #include "nsIDOMHTMLElement.h"
 #include "nsIPresShell.h"
 #include "nsIStringBundle.h"
@@ -1579,27 +1578,26 @@ ChromeContextMenuListener::HandleEvent(n
             }
           }
 
           targetDOMnode = node;
         }
       }
     }
 
-    // always consume events for plugins and Java who may throw their
-    // own context menus but not for image objects.  Document objects
-    // will never be targets or ancestors of targets, so that's OK.
+    // always consume events for plugins who may throw their own context menus
+    // but not for image objects. Document objects will never be targets or
+    // ancestors of targets, so that's OK.
     nsCOMPtr<nsIDOMHTMLObjectElement> objectElement;
     if (!(flags & nsIContextMenuListener::CONTEXT_IMAGE)) {
       objectElement = do_QueryInterface(node);
     }
     nsCOMPtr<nsIDOMHTMLEmbedElement> embedElement(do_QueryInterface(node));
-    nsCOMPtr<nsIDOMHTMLAppletElement> appletElement(do_QueryInterface(node));
 
-    if (objectElement || embedElement || appletElement) {
+    if (objectElement || embedElement) {
       return NS_OK;
     }
   }
 
   // Bubble out, looking for items of interest
   do {
     uint16_t nodeType;
     res = node->GetNodeType(&nodeType);
--- a/dom/base/nsObjectLoadingContent.cpp
+++ b/dom/base/nsObjectLoadingContent.cpp
@@ -16,17 +16,16 @@
 #include "nsIContent.h"
 #include "nsIContentInlines.h"
 #include "nsIDocShell.h"
 #include "nsIDocShellLoadInfo.h"
 #include "nsIDocument.h"
 #include "nsIDOMCustomEvent.h"
 #include "nsIDOMDocument.h"
 #include "nsIDOMHTMLObjectElement.h"
-#include "nsIDOMHTMLAppletElement.h"
 #include "nsIExternalProtocolHandler.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsIObjectFrame.h"
 #include "nsIPermissionManager.h"
 #include "nsPluginHost.h"
 #include "nsPluginInstanceOwner.h"
 #include "nsJSNPRuntime.h"
 #include "nsINestedURI.h"
--- a/dom/bindings/BindingUtils.cpp
+++ b/dom/bindings/BindingUtils.cpp
@@ -43,17 +43,16 @@
 #include "mozilla/dom/DOMErrorBinding.h"
 #include "mozilla/dom/DOMException.h"
 #include "mozilla/dom/ElementBinding.h"
 #include "mozilla/dom/HTMLObjectElement.h"
 #include "mozilla/dom/HTMLObjectElementBinding.h"
 #include "mozilla/dom/HTMLSharedObjectElement.h"
 #include "mozilla/dom/HTMLElementBinding.h"
 #include "mozilla/dom/HTMLEmbedElementBinding.h"
-#include "mozilla/dom/HTMLAppletElementBinding.h"
 #include "mozilla/dom/Promise.h"
 #include "mozilla/dom/ResolveSystemBinding.h"
 #include "mozilla/dom/WebIDLGlobalNameHash.h"
 #include "mozilla/dom/WorkerPrivate.h"
 #include "mozilla/dom/WorkerScope.h"
 #include "mozilla/dom/XrayExpandoClass.h"
 #include "mozilla/jsipc/CrossProcessObjectWrappers.h"
 #include "nsDOMClassInfo.h"
@@ -2308,21 +2307,17 @@ ReparentWrapper(JSContext* aCx, JS::Hand
 
   JS::Rooted<JSObject*> maybeObjLC(aCx, aObj);
   nsObjectLoadingContent* htmlobject;
   nsresult rv = UNWRAP_OBJECT(HTMLObjectElement, &maybeObjLC, htmlobject);
   if (NS_FAILED(rv)) {
     rv = UnwrapObject<prototypes::id::HTMLEmbedElement,
                       HTMLSharedObjectElement>(&maybeObjLC, htmlobject);
     if (NS_FAILED(rv)) {
-      rv = UnwrapObject<prototypes::id::HTMLAppletElement,
-                        HTMLSharedObjectElement>(&maybeObjLC, htmlobject);
-      if (NS_FAILED(rv)) {
-        htmlobject = nullptr;
-      }
+      htmlobject = nullptr;
     }
   }
   if (htmlobject) {
     htmlobject->SetupProtoChain(aCx, aObj);
   }
 
   // Now we can just return the wrapper
   return NS_OK;
--- a/dom/bindings/Bindings.conf
+++ b/dom/bindings/Bindings.conf
@@ -392,20 +392,16 @@ DOMInterfaces = {
     'nativeType': 'mozilla::devtools::HeapSnapshot'
 },
 
 'History': {
     'headerFile': 'nsHistory.h',
     'nativeType': 'nsHistory'
 },
 
-'HTMLAppletElement': {
-    'nativeType': 'mozilla::dom::HTMLSharedObjectElement'
-},
-
 'HTMLBaseElement': {
     'nativeType': 'mozilla::dom::HTMLSharedElement'
 },
 
 'HTMLCollection': {
     'nativeType': 'nsIHTMLCollection',
     # nsContentList.h pulls in nsIHTMLCollection.h
     'headerFile': 'nsContentList.h',
--- a/dom/bindings/Configuration.py
+++ b/dom/bindings/Configuration.py
@@ -707,18 +707,17 @@ class Descriptor(DescriptorProvider):
         resolveOwnProperty and enumerateOwnProperties hooks.  But for
         the special case of plugin-loading elements, we do NOT want
         those, because we don't want to instantiate plug-ins simply
         due to chrome touching them and that's all those hooks do on
         those elements.  So we special-case those here.
         """
         return (self.interface.getExtendedAttribute("NeedResolve") and
                 self.interface.identifier.name not in ["HTMLObjectElement",
-                                                       "HTMLEmbedElement",
-                                                       "HTMLAppletElement"])
+                                                       "HTMLEmbedElement"])
     def needsXrayNamedDeleterHook(self):
         return self.operations["NamedDeleter"] is not None
 
     def needsSpecialGenericOps(self):
         """
         Returns true if this descriptor requires generic ops other than
         GenericBindingMethod/GenericBindingGetter/GenericBindingSetter.
 
--- a/dom/html/HTMLObjectElement.cpp
+++ b/dom/html/HTMLObjectElement.cpp
@@ -555,17 +555,17 @@ EventStates
 HTMLObjectElement::IntrinsicState() const
 {
   return nsGenericHTMLFormElement::IntrinsicState() | ObjectState();
 }
 
 uint32_t
 HTMLObjectElement::GetCapabilities() const
 {
-  return nsObjectLoadingContent::GetCapabilities() | eSupportClassID;
+  return nsObjectLoadingContent::GetCapabilities();
 }
 
 void
 HTMLObjectElement::DestroyContent()
 {
   nsObjectLoadingContent::DestroyContent();
   nsGenericHTMLFormElement::DestroyContent();
 }
--- a/dom/html/HTMLSharedObjectElement.cpp
+++ b/dom/html/HTMLSharedObjectElement.cpp
@@ -2,17 +2,16 @@
 /* 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/. */
 
 #include "mozilla/EventStates.h"
 #include "mozilla/dom/HTMLSharedObjectElement.h"
 #include "mozilla/dom/HTMLEmbedElementBinding.h"
-#include "mozilla/dom/HTMLAppletElementBinding.h"
 #include "mozilla/dom/ElementInlines.h"
 
 #include "nsIDocument.h"
 #include "nsIPluginDocument.h"
 #include "nsIDOMDocument.h"
 #include "nsThreadUtils.h"
 #include "nsIScriptError.h"
 #include "nsIWidget.h"
@@ -86,18 +85,17 @@ NS_INTERFACE_TABLE_HEAD_CYCLE_COLLECTION
                                nsIStreamListener,
                                nsIFrameLoaderOwner,
                                nsIObjectLoadingContent,
                                imgINotificationObserver,
                                nsIImageLoadingContent,
                                imgIOnloadBlocker,
                                nsIChannelEventSink)
   NS_INTERFACE_TABLE_TO_MAP_SEGUE
-  NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLAppletElement, applet)
-  NS_INTERFACE_MAP_ENTRY_IF_TAG(nsIDOMHTMLEmbedElement, embed)
+  NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLEmbedElement)
 NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
 
 NS_IMPL_ELEMENT_CLONE(HTMLSharedObjectElement)
 
 #ifdef XP_MACOSX
 
 NS_IMETHODIMP
 HTMLSharedObjectElement::PostHandleEvent(EventChainPostVisitor& aVisitor)
@@ -191,17 +189,17 @@ HTMLSharedObjectElement::OnAttrSetButNot
 }
 
 nsresult
 HTMLSharedObjectElement::AfterMaybeChangeAttr(int32_t aNamespaceID,
                                               nsIAtom* aName,
                                               bool aNotify)
 {
   if (aNamespaceID == kNameSpaceID_None) {
-    if (aName == URIAttrName()) {
+    if (aName == nsGkAtoms::src) {
       // If aNotify is false, we are coming from the parser or some such place;
       // we'll get bound after all the attributes have been set, so we'll do the
       // object load from BindToTree/DoneAddingChildren.
       // Skip the LoadObject call in that case.
       // We also don't want to start loading the object when we're not yet in
       // a document, just in case that the caller wants to set additional
       // attributes before inserting the node into the document.
       if (aNotify && IsInComposedDoc() && mIsDoneAddingChildren &&
@@ -241,30 +239,16 @@ HTMLSharedObjectElement::GetDesiredIMESt
 {
   if (Type() == eType_Plugin) {
     return IMEState(IMEState::PLUGIN);
   }
 
   return nsGenericHTMLElement::GetDesiredIMEState();
 }
 
-NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Align, align)
-NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Alt, alt)
-NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Archive, archive)
-NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Code, code)
-NS_IMPL_URI_ATTR(HTMLSharedObjectElement, CodeBase, codebase)
-NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Height, height)
-NS_IMPL_INT_ATTR(HTMLSharedObjectElement, Hspace, hspace)
-NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Name, name)
-NS_IMPL_URI_ATTR_WITH_BASE(HTMLSharedObjectElement, Object, object, codebase)
-NS_IMPL_URI_ATTR(HTMLSharedObjectElement, Src, src)
-NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Type, type)
-NS_IMPL_INT_ATTR(HTMLSharedObjectElement, Vspace, vspace)
-NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Width, width)
-
 int32_t
 HTMLSharedObjectElement::TabIndexDefault()
 {
   return -1;
 }
 
 bool
 HTMLSharedObjectElement::ParseAttribute(int32_t aNamespaceID,
@@ -385,22 +369,19 @@ HTMLSharedObjectElement::CopyInnerTo(Ele
 
   return rv;
 }
 
 JSObject*
 HTMLSharedObjectElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
 {
   JSObject* obj;
-  if (mNodeInfo->Equals(nsGkAtoms::applet)) {
-    obj = HTMLAppletElementBinding::Wrap(aCx, this, aGivenProto);
-  } else {
-    MOZ_ASSERT(mNodeInfo->Equals(nsGkAtoms::embed));
-    obj = HTMLEmbedElementBinding::Wrap(aCx, this, aGivenProto);
-  }
+  MOZ_ASSERT(mNodeInfo->Equals(nsGkAtoms::embed));
+  obj = HTMLEmbedElementBinding::Wrap(aCx, this, aGivenProto);
+
   if (!obj) {
     return nullptr;
   }
   JS::Rooted<JSObject*> rootedObj(aCx, obj);
   SetupProtoChain(aCx, rootedObj);
   return rootedObj;
 }
 
@@ -412,10 +393,17 @@ HTMLSharedObjectElement::GetContentPolic
     // through RequestContext yet.
     return nsIContentPolicy::TYPE_INTERNAL_OBJECT;
   } else {
     MOZ_ASSERT(mNodeInfo->Equals(nsGkAtoms::embed));
     return nsIContentPolicy::TYPE_INTERNAL_EMBED;
   }
 }
 
+NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Align, align)
+NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Width, width)
+NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Height, height)
+NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Name, name)
+NS_IMPL_URI_ATTR(HTMLSharedObjectElement, Src, src)
+NS_IMPL_STRING_ATTR(HTMLSharedObjectElement, Type, type)
+
 } // namespace dom
 } // namespace mozilla
--- a/dom/html/HTMLSharedObjectElement.h
+++ b/dom/html/HTMLSharedObjectElement.h
@@ -7,56 +7,43 @@
 #ifndef mozilla_dom_HTMLSharedObjectElement_h
 #define mozilla_dom_HTMLSharedObjectElement_h
 
 #include "mozilla/Attributes.h"
 #include "nsGenericHTMLElement.h"
 #include "nsObjectLoadingContent.h"
 #include "nsGkAtoms.h"
 #include "nsError.h"
-#include "nsIDOMHTMLAppletElement.h"
 #include "nsIDOMHTMLEmbedElement.h"
 
 namespace mozilla {
 namespace dom {
 
 class HTMLSharedObjectElement final : public nsGenericHTMLElement
                                     , public nsObjectLoadingContent
-                                    , public nsIDOMHTMLAppletElement
                                     , public nsIDOMHTMLEmbedElement
 {
 public:
   explicit HTMLSharedObjectElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
                                    mozilla::dom::FromParser aFromParser = mozilla::dom::NOT_FROM_PARSER);
 
+  NS_DECL_NSIDOMHTMLEMBEDELEMENT
   // nsISupports
   NS_DECL_ISUPPORTS_INHERITED
 
   virtual int32_t TabIndexDefault() override;
 
 #ifdef XP_MACOSX
   // nsIDOMEventTarget
   NS_IMETHOD PostHandleEvent(EventChainPostVisitor& aVisitor) override;
 #endif
 
-  // nsIDOMHTMLAppletElement
-  NS_DECL_NSIDOMHTMLAPPLETELEMENT
-
-  // Can't use macro for nsIDOMHTMLEmbedElement because it has conflicts with
-  // NS_DECL_NSIDOMHTMLAPPLETELEMENT.
-
   // EventTarget
   virtual void AsyncEventRunning(AsyncEventDispatcher* aEvent) override;
 
-  // nsIDOMHTMLEmbedElement
-  NS_IMETHOD GetSrc(nsAString &aSrc) override;
-  NS_IMETHOD SetSrc(const nsAString &aSrc) override;
-  NS_IMETHOD GetType(nsAString &aType) override;
-  NS_IMETHOD SetType(const nsAString &aType) override;
-
   virtual nsresult BindToTree(nsIDocument *aDocument, nsIContent *aParent,
                               nsIContent *aBindingParent,
                               bool aCompileEventHandlers) override;
   virtual void UnbindFromTree(bool aDeep = true,
                               bool aNullParent = true) override;
 
   virtual bool IsHTMLFocusable(bool aWithMouse, bool *aIsFocusable, int32_t *aTabIndex) override;
   virtual IMEState GetDesiredIMEState() override;
@@ -81,118 +68,63 @@ public:
 
   nsresult CopyInnerTo(Element* aDest, bool aPreallocateChildren);
 
   void StartObjectLoad() { StartObjectLoad(true, false); }
 
   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED_NO_UNLINK(HTMLSharedObjectElement,
                                                      nsGenericHTMLElement)
 
-  // WebIDL API for <applet>
+  // WebIDL <embed> api
   void GetAlign(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::align, aValue);
   }
   void SetAlign(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::align, aValue, aRv);
   }
-  void GetAlt(DOMString& aValue)
-  {
-    GetHTMLAttr(nsGkAtoms::alt, aValue);
-  }
-  void SetAlt(const nsAString& aValue, ErrorResult& aRv)
-  {
-    SetHTMLAttr(nsGkAtoms::alt, aValue, aRv);
-  }
-  void GetArchive(DOMString& aValue)
-  {
-    GetHTMLAttr(nsGkAtoms::archive, aValue);
-  }
-  void SetArchive(const nsAString& aValue, ErrorResult& aRv)
-  {
-    SetHTMLAttr(nsGkAtoms::archive, aValue, aRv);
-  }
-  void GetCode(DOMString& aValue)
-  {
-    GetHTMLAttr(nsGkAtoms::code, aValue);
-  }
-  void SetCode(const nsAString& aValue, ErrorResult& aRv)
-  {
-    SetHTMLAttr(nsGkAtoms::code, aValue, aRv);
-  }
-  // XPCOM GetCodebase is ok; note that it's a URI attribute
-  void SetCodeBase(const nsAString& aValue, ErrorResult& aRv)
-  {
-    SetHTMLAttr(nsGkAtoms::codebase, aValue, aRv);
-  }
   void GetHeight(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::height, aValue);
   }
   void SetHeight(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::height, aValue, aRv);
   }
-  uint32_t Hspace()
-  {
-    return GetUnsignedIntAttr(nsGkAtoms::hspace, 0);
-  }
-  void SetHspace(uint32_t aValue, ErrorResult& aRv)
-  {
-    SetUnsignedIntAttr(nsGkAtoms::hspace, aValue, 0, aRv);
-  }
   void GetName(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::name, aValue);
   }
   void SetName(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::name, aValue, aRv);
   }
-  // XPCOM GetObject is ok; note that it's a URI attribute with a weird base URI
-  void SetObject(const nsAString& aValue, ErrorResult& aRv)
-  {
-    SetHTMLAttr(nsGkAtoms::object, aValue, aRv);
-  }
-  uint32_t Vspace()
-  {
-    return GetUnsignedIntAttr(nsGkAtoms::vspace, 0);
-  }
-  void SetVspace(uint32_t aValue, ErrorResult& aRv)
-  {
-    SetUnsignedIntAttr(nsGkAtoms::vspace, aValue, 0, aRv);
-  }
   void GetWidth(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::width, aValue);
   }
   void SetWidth(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::width, aValue, aRv);
   }
-
   // WebIDL <embed> api
   // XPCOM GetSrc is ok; note that it's a URI attribute
   void SetSrc(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::src, aValue, aRv);
   }
   void GetType(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::type, aValue);
   }
   void SetType(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::type, aValue, aRv);
   }
-  // width covered by <applet>
-  // height covered by <applet>
-  // align covered by <applet>
-  // name covered by <applet>
   nsIDocument*
   GetSVGDocument(nsIPrincipal& aSubjectPrincipal)
   {
     return GetContentDocument(aSubjectPrincipal);
   }
 
   /**
    * Calls LoadObject with the correct arguments to start the plugin load.
@@ -207,24 +139,17 @@ protected:
                                 const nsAttrValue* aValue,
                                 const nsAttrValue* aOldValue,
                                 bool aNotify) override;
   virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
                                           const nsAttrValueOrString& aValue,
                                           bool aNotify) override;
 
 private:
-  virtual ~HTMLSharedObjectElement();
-
-  nsIAtom *URIAttrName() const
-  {
-    return mNodeInfo->Equals(nsGkAtoms::applet) ?
-           nsGkAtoms::code :
-           nsGkAtoms::src;
-  }
+  ~HTMLSharedObjectElement();
 
   nsContentPolicyType GetContentPolicyType() const override;
 
   // mIsDoneAddingChildren is only really used for <applet>.  This boolean is
   // always true for <embed>, per the documentation in nsIContent.h.
   bool mIsDoneAddingChildren;
 
   virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
--- a/dom/interfaces/html/moz.build
+++ b/dom/interfaces/html/moz.build
@@ -4,17 +4,16 @@
 # 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/.
 
 with Files("**"):
     BUG_COMPONENT = ("Core", "DOM")
 
 XPIDL_SOURCES += [
     'nsIDOMHTMLAnchorElement.idl',
-    'nsIDOMHTMLAppletElement.idl',
     'nsIDOMHTMLAreaElement.idl',
     'nsIDOMHTMLBaseElement.idl',
     'nsIDOMHTMLBodyElement.idl',
     'nsIDOMHTMLButtonElement.idl',
     'nsIDOMHTMLCanvasElement.idl',
     'nsIDOMHTMLCollection.idl',
     'nsIDOMHTMLDirectoryElement.idl',
     'nsIDOMHTMLDocument.idl',
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLAppletElement.idl
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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 "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLAppletElement interface is the interface to a [X]HTML
- * applet element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(0b7d12c9-4cd3-47db-99c6-0b5ff910446c)]
-interface nsIDOMHTMLAppletElement : nsISupports
-{
-           attribute DOMString        align;
-           attribute DOMString        alt;
-           attribute DOMString        archive;
-           attribute DOMString        code;
-           attribute DOMString        codeBase;
-           attribute DOMString        height;
-  // Modified in DOM Level 2:
-           attribute long             hspace;
-           attribute DOMString        name;
-  // Modified in DOM Level 2:
-           attribute DOMString        object;
-  // Modified in DOM Level 2:
-           attribute long             vspace;
-           attribute DOMString        width;
-};
--- a/dom/plugins/base/nsPluginInstanceOwner.cpp
+++ b/dom/plugins/base/nsPluginInstanceOwner.cpp
@@ -32,17 +32,16 @@ using mozilla::DefaultXDisplay;
 #include "nsIDocShellTreeItem.h"
 #include "nsIWebBrowserChrome.h"
 #include "nsLayoutUtils.h"
 #include "nsIPluginWidget.h"
 #include "nsViewManager.h"
 #include "nsIDocShellTreeOwner.h"
 #include "nsIDOMHTMLObjectElement.h"
 #include "nsIAppShell.h"
-#include "nsIDOMHTMLAppletElement.h"
 #include "nsIObjectLoadingContent.h"
 #include "nsObjectLoadingContent.h"
 #include "nsAttrName.h"
 #include "nsIFocusManager.h"
 #include "nsFocusManager.h"
 #include "nsIDOMDragEvent.h"
 #include "nsIScriptSecurityManager.h"
 #include "nsIScrollableFrame.h"
@@ -1300,19 +1299,17 @@ void nsPluginInstanceOwner::SetCurrentAs
 
 NS_IMETHODIMP nsPluginInstanceOwner::GetTagType(nsPluginTagType *result)
 {
   NS_ENSURE_ARG_POINTER(result);
 
   *result = nsPluginTagType_Unknown;
 
   nsCOMPtr<nsIContent> content = do_QueryReferent(mContent);
-  if (content->IsHTMLElement(nsGkAtoms::applet))
-    *result = nsPluginTagType_Applet;
-  else if (content->IsHTMLElement(nsGkAtoms::embed))
+  if (content->IsHTMLElement(nsGkAtoms::embed))
     *result = nsPluginTagType_Embed;
   else if (content->IsHTMLElement(nsGkAtoms::object))
     *result = nsPluginTagType_Object;
 
   return NS_OK;
 }
 
 void nsPluginInstanceOwner::GetParameters(nsTArray<MozPluginParameter>& parameters)
deleted file mode 100644
--- a/dom/webidl/HTMLAppletElement.webidl
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* 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/.
- *
- * The origin of this IDL file is
- * http://www.whatwg.org/specs/web-apps/current-work/#the-applet-element
- *
- * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and
- * Opera Software ASA. You are granted a license to use, reproduce
- * and create derivative works of this document.
- */
-
-// http://www.whatwg.org/specs/web-apps/current-work/#the-applet-element
-[NeedResolve, UnsafeInPrerendering]
-interface HTMLAppletElement : HTMLElement {
-  [Pure, SetterThrows]
-           attribute DOMString align;
-  [Pure, SetterThrows]
-           attribute DOMString alt;
-  [Pure, SetterThrows]
-           attribute DOMString archive;
-  [Pure, SetterThrows]
-           attribute DOMString code;
-  [Pure, SetterThrows]
-           attribute DOMString codeBase;
-  [Pure, SetterThrows]
-           attribute DOMString height;
-  [Pure, SetterThrows]
-           attribute unsigned long hspace;
-  [Pure, SetterThrows]
-           attribute DOMString name;
-  [Pure, SetterThrows]
-           attribute DOMString _object;
-  [Pure, SetterThrows]
-           attribute unsigned long vspace;
-  [Pure, SetterThrows]
-           attribute DOMString width;
-};
-
-HTMLAppletElement implements MozImageLoadingContent;
-HTMLAppletElement implements MozFrameLoaderOwner;
-HTMLAppletElement implements MozObjectLoadingContent;
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -549,17 +549,16 @@ WEBIDL_FILES = [
     'GeometryUtils.webidl',
     'GetUserMediaRequest.webidl',
     'Grid.webidl',
     'Headers.webidl',
     'HeapSnapshot.webidl',
     'History.webidl',
     'HTMLAllCollection.webidl',
     'HTMLAnchorElement.webidl',
-    'HTMLAppletElement.webidl',
     'HTMLAreaElement.webidl',
     'HTMLAudioElement.webidl',
     'HTMLBaseElement.webidl',
     'HTMLBodyElement.webidl',
     'HTMLBRElement.webidl',
     'HTMLButtonElement.webidl',
     'HTMLCanvasElement.webidl',
     'HTMLCollection.webidl',
--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -3700,17 +3700,16 @@ nsCSSFrameConstructor::FindHTMLData(Elem
     { &nsGkAtoms::br,
       FCDATA_DECL(FCDATA_IS_LINE_PARTICIPANT | FCDATA_IS_LINE_BREAK,
                   NS_NewBRFrame) },
     SIMPLE_TAG_CREATE(wbr, NS_NewWBRFrame),
     SIMPLE_TAG_CHAIN(input, nsCSSFrameConstructor::FindInputData),
     SIMPLE_TAG_CREATE(textarea, NS_NewTextControlFrame),
     COMPLEX_TAG_CREATE(select, &nsCSSFrameConstructor::ConstructSelectFrame),
     SIMPLE_TAG_CHAIN(object, nsCSSFrameConstructor::FindObjectData),
-    SIMPLE_TAG_CHAIN(applet, nsCSSFrameConstructor::FindObjectData),
     SIMPLE_TAG_CHAIN(embed, nsCSSFrameConstructor::FindObjectData),
     COMPLEX_TAG_CREATE(fieldset,
                        &nsCSSFrameConstructor::ConstructFieldSetFrame),
     { &nsGkAtoms::legend,
       FCDATA_DECL(FCDATA_ALLOW_BLOCK_STYLES | FCDATA_MAY_NEED_SCROLLFRAME,
                   NS_NewLegendFrame) },
     SIMPLE_TAG_CREATE(frameset, NS_NewHTMLFramesetFrame),
     SIMPLE_TAG_CREATE(iframe, NS_NewSubDocumentFrame),
@@ -3842,17 +3841,17 @@ nsCSSFrameConstructor::FindObjectData(El
   uint32_t type;
   if (aElement->State().HasAtLeastOneOfStates(NS_EVENT_STATE_BROKEN |
                                               NS_EVENT_STATE_USERDISABLED |
                                               NS_EVENT_STATE_SUPPRESSED)) {
     type = nsIObjectLoadingContent::TYPE_NULL;
   } else {
     nsCOMPtr<nsIObjectLoadingContent> objContent(do_QueryInterface(aElement));
     NS_ASSERTION(objContent,
-                 "applet, embed and object must implement "
+                 "embed and object must implement "
                  "nsIObjectLoadingContent!");
 
     objContent->GetDisplayedType(&type);
   }
 
   static const FrameConstructionDataByInt sObjectData[] = {
     SIMPLE_INT_CREATE(nsIObjectLoadingContent::TYPE_LOADING,
                       NS_NewEmptyFrame),
--- a/parser/htmlparser/nsHTMLTagList.h
+++ b/parser/htmlparser/nsHTMLTagList.h
@@ -39,17 +39,17 @@
  ******/
 
 #define HTML_HTMLELEMENT_TAG(_tag) HTML_TAG(_tag, , )
 
 HTML_TAG(a, Anchor, Anchor)
 HTML_HTMLELEMENT_TAG(abbr)
 HTML_HTMLELEMENT_TAG(acronym)
 HTML_HTMLELEMENT_TAG(address)
-HTML_TAG(applet, SharedObject, Applet)
+HTML_TAG(applet, Unknown, Unknown)
 HTML_TAG(area, Area, Area)
 HTML_HTMLELEMENT_TAG(article)
 HTML_HTMLELEMENT_TAG(aside)
 HTML_TAG(audio, Audio, Audio)
 HTML_HTMLELEMENT_TAG(b)
 HTML_TAG(base, Shared, Base)
 HTML_HTMLELEMENT_TAG(basefont)
 HTML_HTMLELEMENT_TAG(bdo)
--- a/testing/web-platform/meta/dom/nodes/Node-cloneNode.html.ini
+++ b/testing/web-platform/meta/dom/nodes/Node-cloneNode.html.ini
@@ -4,8 +4,11 @@
     expected: FAIL
 
   [createElement(dialog)]
     expected: FAIL
 
   [implementation.createDocument]
     expected: FAIL
 
+  [createElement(applet)]
+    expected: FAIL
+
--- a/testing/web-platform/meta/html/dom/documents/dom-tree-accessors/nameditem-03.html.ini
+++ b/testing/web-platform/meta/html/dom/documents/dom-tree-accessors/nameditem-03.html.ini
@@ -7,8 +7,20 @@
     expected: FAIL
 
   [If there are two applets, a collection should be returned. (name and id)]
     expected: FAIL
 
   [If there are two applets, a collection should be returned. (id and name)]
     expected: FAIL
 
+  [If there is one applet, it should be returned (name)]
+    expected: FAIL
+
+  [An id shouldn't affect getting an applet by name]
+    expected: FAIL
+
+  [If there is one applet, it should be returned (id)]
+    expected: FAIL
+
+  [A name shouldn't affect getting an applet by id]
+    expected: FAIL
+
--- a/testing/web-platform/meta/html/dom/interfaces.html.ini
+++ b/testing/web-platform/meta/html/dom/interfaces.html.ini
@@ -3371,8 +3371,95 @@
     expected: FAIL
 
   [HTMLElement interface: document.createElement("noscript") must inherit property "oncancel" with the proper type (19)]
     expected: FAIL
 
   [HTMLElement interface: document.createElement("noscript") must inherit property "oncuechange" with the proper type (26)]
     expected: FAIL
 
+  [HTMLAppletElement interface: existence and properties of interface object]
+    expected: FAIL
+
+  [HTMLAppletElement interface object length]
+    expected: FAIL
+
+  [HTMLAppletElement interface object name]
+    expected: FAIL
+
+  [HTMLAppletElement interface: existence and properties of interface prototype object]
+    expected: FAIL
+
+  [HTMLAppletElement interface: existence and properties of interface prototype object's "constructor" property]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute align]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute alt]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute archive]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute code]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute codeBase]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute height]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute hspace]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute name]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute object]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute vspace]
+    expected: FAIL
+
+  [HTMLAppletElement interface: attribute width]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "align" with the proper type (0)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "alt" with the proper type (1)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "archive" with the proper type (2)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "code" with the proper type (3)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "codeBase" with the proper type (4)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "height" with the proper type (5)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "hspace" with the proper type (6)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "name" with the proper type (7)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "object" with the proper type (8)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "vspace" with the proper type (9)]
+    expected: FAIL
+
+  [HTMLAppletElement interface: document.createElement("applet") must inherit property "width" with the proper type (10)]
+    expected: FAIL
+
+  [HTMLAppletElement must be primary interface of document.createElement("applet")]
+    expected: FAIL
+
+  [Stringification of document.createElement("applet")]
+    expected: FAIL
+
--- a/testing/web-platform/meta/html/dom/reflection-obsolete.html.ini
+++ b/testing/web-platform/meta/html/dom/reflection-obsolete.html.ini
@@ -2824,8 +2824,1280 @@
     expected: FAIL
 
   [marquee.width: IDL set to object "test-toString"]
     expected: FAIL
 
   [marquee.width: IDL set to object "test-valueOf"]
     expected: FAIL
 
+  [applet.align: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.align: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.align: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.align: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.align: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.align: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.align: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.align: setAttribute() to true]
+    expected: FAIL
+
+  [applet.align: setAttribute() to false]
+    expected: FAIL
+
+  [applet.align: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.align: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.align: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.align: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.align: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.align: setAttribute() to null]
+    expected: FAIL
+
+  [applet.align: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.align: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.align: IDL set to ""]
+    expected: FAIL
+
+  [applet.align: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.align: IDL set to undefined]
+    expected: FAIL
+
+  [applet.align: IDL set to 7]
+    expected: FAIL
+
+  [applet.align: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.align: IDL set to true]
+    expected: FAIL
+
+  [applet.align: IDL set to false]
+    expected: FAIL
+
+  [applet.align: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.align: IDL set to NaN]
+    expected: FAIL
+
+  [applet.align: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.align: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.align: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.align: IDL set to null]
+    expected: FAIL
+
+  [applet.align: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.align: IDL set to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.alt: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.alt: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to true]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to false]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to null]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.alt: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.alt: IDL set to ""]
+    expected: FAIL
+
+  [applet.alt: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.alt: IDL set to undefined]
+    expected: FAIL
+
+  [applet.alt: IDL set to 7]
+    expected: FAIL
+
+  [applet.alt: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.alt: IDL set to true]
+    expected: FAIL
+
+  [applet.alt: IDL set to false]
+    expected: FAIL
+
+  [applet.alt: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.alt: IDL set to NaN]
+    expected: FAIL
+
+  [applet.alt: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.alt: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.alt: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.alt: IDL set to null]
+    expected: FAIL
+
+  [applet.alt: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.alt: IDL set to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.archive: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.archive: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to true]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to false]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to null]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.archive: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.archive: IDL set to ""]
+    expected: FAIL
+
+  [applet.archive: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.archive: IDL set to undefined]
+    expected: FAIL
+
+  [applet.archive: IDL set to 7]
+    expected: FAIL
+
+  [applet.archive: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.archive: IDL set to true]
+    expected: FAIL
+
+  [applet.archive: IDL set to false]
+    expected: FAIL
+
+  [applet.archive: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.archive: IDL set to NaN]
+    expected: FAIL
+
+  [applet.archive: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.archive: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.archive: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.archive: IDL set to null]
+    expected: FAIL
+
+  [applet.archive: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.archive: IDL set to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.code: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.code: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.code: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.code: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.code: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.code: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.code: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.code: setAttribute() to true]
+    expected: FAIL
+
+  [applet.code: setAttribute() to false]
+    expected: FAIL
+
+  [applet.code: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.code: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.code: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.code: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.code: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.code: setAttribute() to null]
+    expected: FAIL
+
+  [applet.code: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.code: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.code: IDL set to ""]
+    expected: FAIL
+
+  [applet.code: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.code: IDL set to undefined]
+    expected: FAIL
+
+  [applet.code: IDL set to 7]
+    expected: FAIL
+
+  [applet.code: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.code: IDL set to true]
+    expected: FAIL
+
+  [applet.code: IDL set to false]
+    expected: FAIL
+
+  [applet.code: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.code: IDL set to NaN]
+    expected: FAIL
+
+  [applet.code: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.code: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.code: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.code: IDL set to null]
+    expected: FAIL
+
+  [applet.code: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.code: IDL set to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.codeBase: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.codeBase: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to " foo "]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to "http://site.example/"]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to "//site.example/path???@#l"]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to "\\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f "]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to true]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to false]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to null]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.codeBase: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to ""]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to " foo "]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to "http://site.example/"]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to "//site.example/path???@#l"]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to "\\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f "]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to undefined]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to 7]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to true]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to false]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to NaN]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to null]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.codeBase: IDL set to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.height: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.height: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.height: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.height: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.height: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.height: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.height: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.height: setAttribute() to true]
+    expected: FAIL
+
+  [applet.height: setAttribute() to false]
+    expected: FAIL
+
+  [applet.height: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.height: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.height: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.height: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.height: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.height: setAttribute() to null]
+    expected: FAIL
+
+  [applet.height: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.height: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.height: IDL set to ""]
+    expected: FAIL
+
+  [applet.height: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.height: IDL set to undefined]
+    expected: FAIL
+
+  [applet.height: IDL set to 7]
+    expected: FAIL
+
+  [applet.height: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.height: IDL set to true]
+    expected: FAIL
+
+  [applet.height: IDL set to false]
+    expected: FAIL
+
+  [applet.height: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.height: IDL set to NaN]
+    expected: FAIL
+
+  [applet.height: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.height: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.height: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.height: IDL set to null]
+    expected: FAIL
+
+  [applet.height: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.height: IDL set to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.hspace: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.hspace: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to -2147483649]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to -2147483648]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to -36]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to -1]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to 0]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to 1]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to 257]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to 2147483647]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to 2147483648]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to 4294967295]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to 4294967296]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "-1"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "-0"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "0"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "1"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "\\t7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "\\v7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "\\f7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "\\n7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "\\r7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "
7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "
7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "᠎7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to true]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to false]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to object "2"]
+    expected: FAIL
+
+  [applet.hspace: setAttribute() to object "3"]
+    expected: FAIL
+
+  [applet.hspace: IDL set to 0]
+    expected: FAIL
+
+  [applet.hspace: IDL set to 1]
+    expected: FAIL
+
+  [applet.hspace: IDL set to 257]
+    expected: FAIL
+
+  [applet.hspace: IDL set to 2147483647]
+    expected: FAIL
+
+  [applet.hspace: IDL set to "-0"]
+    expected: FAIL
+
+  [applet.hspace: IDL set to 2147483648]
+    expected: FAIL
+
+  [applet.hspace: IDL set to 4294967295]
+    expected: FAIL
+
+  [applet.name: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.name: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.name: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.name: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.name: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.name: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.name: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.name: setAttribute() to true]
+    expected: FAIL
+
+  [applet.name: setAttribute() to false]
+    expected: FAIL
+
+  [applet.name: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.name: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.name: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.name: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.name: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.name: setAttribute() to null]
+    expected: FAIL
+
+  [applet.name: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.name: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.name: IDL set to ""]
+    expected: FAIL
+
+  [applet.name: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.name: IDL set to undefined]
+    expected: FAIL
+
+  [applet.name: IDL set to 7]
+    expected: FAIL
+
+  [applet.name: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.name: IDL set to true]
+    expected: FAIL
+
+  [applet.name: IDL set to false]
+    expected: FAIL
+
+  [applet.name: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.name: IDL set to NaN]
+    expected: FAIL
+
+  [applet.name: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.name: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.name: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.name: IDL set to null]
+    expected: FAIL
+
+  [applet.name: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.name: IDL set to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.object: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.object: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.object: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.object: setAttribute() to " foo "]
+    expected: FAIL
+
+  [applet.object: setAttribute() to "http://site.example/"]
+    expected: FAIL
+
+  [applet.object: setAttribute() to "//site.example/path???@#l"]
+    expected: FAIL
+
+  [applet.object: setAttribute() to "\\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f "]
+    expected: FAIL
+
+  [applet.object: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.object: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.object: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.object: setAttribute() to true]
+    expected: FAIL
+
+  [applet.object: setAttribute() to false]
+    expected: FAIL
+
+  [applet.object: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.object: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.object: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.object: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.object: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.object: setAttribute() to null]
+    expected: FAIL
+
+  [applet.object: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.object: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.object: IDL set to ""]
+    expected: FAIL
+
+  [applet.object: IDL set to " foo "]
+    expected: FAIL
+
+  [applet.object: IDL set to "http://site.example/"]
+    expected: FAIL
+
+  [applet.object: IDL set to "//site.example/path???@#l"]
+    expected: FAIL
+
+  [applet.object: IDL set to "\\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f "]
+    expected: FAIL
+
+  [applet.object: IDL set to undefined]
+    expected: FAIL
+
+  [applet.object: IDL set to 7]
+    expected: FAIL
+
+  [applet.object: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.object: IDL set to true]
+    expected: FAIL
+
+  [applet.object: IDL set to false]
+    expected: FAIL
+
+  [applet.object: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.object: IDL set to NaN]
+    expected: FAIL
+
+  [applet.object: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.object: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.object: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.object: IDL set to null]
+    expected: FAIL
+
+  [applet.object: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.object: IDL set to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.vspace: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.vspace: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to -2147483649]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to -2147483648]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to -36]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to -1]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to 0]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to 1]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to 257]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to 2147483647]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to 2147483648]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to 4294967295]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to 4294967296]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "-1"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "-0"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "0"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "1"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "\\t7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "\\v7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "\\f7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "\\n7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "\\r7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "
7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "
7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "᠎7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " 7"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to true]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to false]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to object "2"]
+    expected: FAIL
+
+  [applet.vspace: setAttribute() to object "3"]
+    expected: FAIL
+
+  [applet.vspace: IDL set to 0]
+    expected: FAIL
+
+  [applet.vspace: IDL set to 1]
+    expected: FAIL
+
+  [applet.vspace: IDL set to 257]
+    expected: FAIL
+
+  [applet.vspace: IDL set to 2147483647]
+    expected: FAIL
+
+  [applet.vspace: IDL set to "-0"]
+    expected: FAIL
+
+  [applet.vspace: IDL set to 2147483648]
+    expected: FAIL
+
+  [applet.vspace: IDL set to 4294967295]
+    expected: FAIL
+
+  [applet.width: typeof IDL attribute]
+    expected: FAIL
+
+  [applet.width: IDL get with DOM attribute unset]
+    expected: FAIL
+
+  [applet.width: setAttribute() to ""]
+    expected: FAIL
+
+  [applet.width: setAttribute() to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.width: setAttribute() to undefined]
+    expected: FAIL
+
+  [applet.width: setAttribute() to 7]
+    expected: FAIL
+
+  [applet.width: setAttribute() to 1.5]
+    expected: FAIL
+
+  [applet.width: setAttribute() to true]
+    expected: FAIL
+
+  [applet.width: setAttribute() to false]
+    expected: FAIL
+
+  [applet.width: setAttribute() to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.width: setAttribute() to NaN]
+    expected: FAIL
+
+  [applet.width: setAttribute() to Infinity]
+    expected: FAIL
+
+  [applet.width: setAttribute() to -Infinity]
+    expected: FAIL
+
+  [applet.width: setAttribute() to "\\0"]
+    expected: FAIL
+
+  [applet.width: setAttribute() to null]
+    expected: FAIL
+
+  [applet.width: setAttribute() to object "test-toString"]
+    expected: FAIL
+
+  [applet.width: setAttribute() to object "test-valueOf"]
+    expected: FAIL
+
+  [applet.width: IDL set to ""]
+    expected: FAIL
+
+  [applet.width: IDL set to " \\0\\x01\\x02\\x03\\x04\\x05\\x06\\x07 \\b\\t\\n\\v\\f\\r\\x0e\\x0f \\x10\\x11\\x12\\x13\\x14\\x15\\x16\\x17 \\x18\\x19\\x1a\\x1b\\x1c\\x1d\\x1e\\x1f  foo "]
+    expected: FAIL
+
+  [applet.width: IDL set to undefined]
+    expected: FAIL
+
+  [applet.width: IDL set to 7]
+    expected: FAIL
+
+  [applet.width: IDL set to 1.5]
+    expected: FAIL
+
+  [applet.width: IDL set to true]
+    expected: FAIL
+
+  [applet.width: IDL set to false]
+    expected: FAIL
+
+  [applet.width: IDL set to object "[object Object\]"]
+    expected: FAIL
+
+  [applet.width: IDL set to NaN]
+    expected: FAIL
+
+  [applet.width: IDL set to Infinity]
+    expected: FAIL
+
+  [applet.width: IDL set to -Infinity]
+    expected: FAIL
+
+  [applet.width: IDL set to "\\0"]
+    expected: FAIL
+
+  [applet.width: IDL set to null]
+    expected: FAIL
+
+  [applet.width: IDL set to object "test-toString"]
+    expected: FAIL
+
+  [applet.width: IDL set to object "test-valueOf"]
+    expected: FAIL
+
--- a/testing/web-platform/meta/html/semantics/interfaces.html.ini
+++ b/testing/web-platform/meta/html/semantics/interfaces.html.ini
@@ -29,8 +29,14 @@
     expected: FAIL
 
   [Interfaces for SLOT]
     expected: FAIL
 
   [Interfaces for å-bar]
     expected: FAIL
 
+  [Interfaces for applet]
+    expected: FAIL
+
+  [Interfaces for APPLET]
+    expected: FAIL
+
--- a/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
+++ b/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
@@ -42,17 +42,16 @@
 #include "nsIDOMEvent.h"
 #include "nsIDOMEventTarget.h"
 #include "nsIDOMFileList.h"
 #include "nsIDOMFocusEvent.h"
 #include "nsIDOMFormData.h"
 #include "nsIDOMGeoPositionError.h"
 #include "nsIDOMHistory.h"
 #include "nsIDOMHTMLAnchorElement.h"
-#include "nsIDOMHTMLAppletElement.h"
 #include "nsIDOMHTMLAreaElement.h"
 #include "nsIDOMHTMLBaseElement.h"
 #include "nsIDOMHTMLBodyElement.h"
 #include "nsIDOMHTMLButtonElement.h"
 #include "nsIDOMHTMLCanvasElement.h"
 #include "nsIDOMHTMLCollection.h"
 #include "nsIDOMHTMLDirectoryElement.h"
 #include "nsIDOMHTMLDocument.h"
@@ -170,17 +169,16 @@
 #include "mozilla/dom/ElementBinding.h"
 #include "mozilla/dom/EventBinding.h"
 #include "mozilla/dom/EventTargetBinding.h"
 #include "mozilla/dom/FileListBinding.h"
 #include "mozilla/dom/FocusEventBinding.h"
 #include "mozilla/dom/FormDataBinding.h"
 #include "mozilla/dom/HistoryBinding.h"
 #include "mozilla/dom/HTMLAnchorElementBinding.h"
-#include "mozilla/dom/HTMLAppletElementBinding.h"
 #include "mozilla/dom/HTMLAreaElementBinding.h"
 #include "mozilla/dom/HTMLBaseElementBinding.h"
 #include "mozilla/dom/HTMLBodyElementBinding.h"
 #include "mozilla/dom/HTMLButtonElementBinding.h"
 #include "mozilla/dom/HTMLCanvasElementBinding.h"
 #include "mozilla/dom/HTMLCollectionBinding.h"
 #include "mozilla/dom/HTMLDirectoryElementBinding.h"
 #include "mozilla/dom/HTMLDocumentBinding.h"
@@ -357,17 +355,16 @@ const ComponentsInterfaceShimEntry kComp
   DEFINE_SHIM(Event),
   DEFINE_SHIM(EventTarget),
   DEFINE_SHIM(FileList),
   DEFINE_SHIM(FocusEvent),
   DEFINE_SHIM(FormData),
   DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIDOMGeoPositionError, PositionError),
   DEFINE_SHIM(History),
   DEFINE_SHIM(HTMLAnchorElement),
-  DEFINE_SHIM(HTMLAppletElement),
   DEFINE_SHIM(HTMLAreaElement),
   DEFINE_SHIM(HTMLBaseElement),
   DEFINE_SHIM(HTMLBodyElement),
   DEFINE_SHIM(HTMLButtonElement),
   DEFINE_SHIM(HTMLCanvasElement),
   DEFINE_SHIM(HTMLCollection),
   DEFINE_SHIM(HTMLDirectoryElement),
   DEFINE_SHIM(HTMLDocument),