Bug 1279218 - Remove Applet tag; r=bz draft
authorKyle Machulis <kyle@nonpolynomial.com>
Mon, 10 Jul 2017 16:00:30 -0700
changeset 617650 af089466a0ce487237db33de0ed7627b63cb66fd
parent 617496 16ffc1d05422a81099ce8b9b59de66dde4c8b2f0
child 617651 af71af410082e1771ab5063887f41796fa6b97b5
push id71110
push userbmo:kyle@nonpolynomial.com
push dateFri, 28 Jul 2017 19:36:45 +0000
reviewersbz
bugs1279218
milestone56.0a1
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
@@ -3690,17 +3690,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),
@@ -3832,17 +3831,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),