Bug 909633. Remove the HTML Microdata API, since no one else ended up implementing it and now it's been removed from the spec. r=bkelly,jgraham
authorBoris Zbarsky <bzbarsky@mit.edu>
Fri, 20 May 2016 23:13:17 -0400
changeset 298331 93d5271f033292f898407d8cb1a1a80721a0ab5d
parent 298330 f66a5b9da35f355aa112cde5018d727246ffcb32
child 298332 fdef8e56876622d669553bdf67524a39df1aab9b
push id30281
push usercbook@mozilla.com
push dateTue, 24 May 2016 12:54:02 +0000
treeherdermozilla-central@829d3be6ba64 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbkelly, jgraham
bugs909633
milestone49.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 909633. Remove the HTML Microdata API, since no one else ended up implementing it and now it's been removed from the spec. r=bkelly,jgraham
dom/base/Element.cpp
dom/base/Element.h
dom/base/nsGkAtomList.h
dom/bindings/Bindings.conf
dom/html/HTMLAnchorElement.cpp
dom/html/HTMLAnchorElement.h
dom/html/HTMLAreaElement.cpp
dom/html/HTMLAreaElement.h
dom/html/HTMLDataElement.cpp
dom/html/HTMLDataElement.h
dom/html/HTMLIFrameElement.cpp
dom/html/HTMLIFrameElement.h
dom/html/HTMLImageElement.cpp
dom/html/HTMLImageElement.h
dom/html/HTMLLinkElement.cpp
dom/html/HTMLLinkElement.h
dom/html/HTMLMediaElement.cpp
dom/html/HTMLMediaElement.h
dom/html/HTMLMetaElement.cpp
dom/html/HTMLMetaElement.h
dom/html/HTMLObjectElement.cpp
dom/html/HTMLObjectElement.h
dom/html/HTMLPropertiesCollection.cpp
dom/html/HTMLPropertiesCollection.h
dom/html/HTMLSharedObjectElement.cpp
dom/html/HTMLSharedObjectElement.h
dom/html/HTMLSourceElement.cpp
dom/html/HTMLSourceElement.h
dom/html/HTMLTimeElement.cpp
dom/html/HTMLTimeElement.h
dom/html/HTMLTrackElement.h
dom/html/moz.build
dom/html/nsGenericHTMLElement.cpp
dom/html/nsGenericHTMLElement.h
dom/html/nsHTMLDocument.cpp
dom/html/nsHTMLDocument.h
dom/html/test/test_bug629801.html
dom/html/test/test_bug763626.html
dom/html/test/test_bug839371.html
dom/interfaces/html/nsIDOMHTMLDocument.idl
dom/interfaces/html/nsIDOMHTMLElement.idl
dom/tests/mochitest/general/test_interfaces.html
dom/webidl/Document.webidl
dom/webidl/HTMLDocument.webidl
dom/webidl/HTMLElement.webidl
dom/webidl/HTMLPropertiesCollection.webidl
dom/webidl/moz.build
testing/web-platform/meta/html/dom/interfaces.html.ini
testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html.ini
testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html.ini
testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html.ini
testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html.ini
testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html.ini
testing/web-platform/tests/html/dom/elements-microdata.js
testing/web-platform/tests/html/dom/interfaces.html
testing/web-platform/tests/html/dom/reflection-embedded.html
testing/web-platform/tests/html/dom/reflection-forms.html
testing/web-platform/tests/html/dom/reflection-grouping.html
testing/web-platform/tests/html/dom/reflection-metadata.html
testing/web-platform/tests/html/dom/reflection-misc.html
testing/web-platform/tests/html/dom/reflection-obsolete.html
testing/web-platform/tests/html/dom/reflection-original.html
testing/web-platform/tests/html/dom/reflection-sections.html
testing/web-platform/tests/html/dom/reflection-tabular.html
testing/web-platform/tests/html/dom/reflection-text.html
testing/web-platform/tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js
testing/web-platform/tests/tools/scripts/id2path.json
--- a/dom/base/Element.cpp
+++ b/dom/base/Element.cpp
@@ -3072,20 +3072,16 @@ nsDOMTokenListPropertyDestructor(void *a
 {
   nsDOMTokenList* list =
     static_cast<nsDOMTokenList*>(aPropertyValue);
   NS_RELEASE(list);
 }
 
 static nsIAtom** sPropertiesToTraverseAndUnlink[] =
   {
-    &nsGkAtoms::microdataProperties,
-    &nsGkAtoms::itemtype,
-    &nsGkAtoms::itemref,
-    &nsGkAtoms::itemprop,
     &nsGkAtoms::sandbox,
     &nsGkAtoms::sizes,
     nullptr
   };
 
 // static
 nsIAtom***
 Element::HTMLSVGPropertiesToTraverseAndUnlink()
@@ -3117,36 +3113,16 @@ Element::GetTokenList(nsIAtom* aAtom,
   if (!list) {
     list = new nsDOMTokenList(this, aAtom, aSupportedTokens);
     NS_ADDREF(list);
     SetProperty(aAtom, list, nsDOMTokenListPropertyDestructor);
   }
   return list;
 }
 
-void
-Element::GetTokenList(nsIAtom* aAtom, nsIVariant** aResult)
-{
-  nsISupports* itemType = GetTokenList(aAtom);
-  nsCOMPtr<nsIWritableVariant> out = new nsVariant();
-  out->SetAsInterface(NS_GET_IID(nsISupports), itemType);
-  out.forget(aResult);
-}
-
-nsresult
-Element::SetTokenList(nsIAtom* aAtom, nsIVariant* aValue)
-{
-  nsDOMTokenList* itemType = GetTokenList(aAtom);
-  nsAutoString string;
-  aValue->GetAsAString(string);
-  ErrorResult rv;
-  itemType->SetValue(string, rv);
-  return rv.StealNSResult();
-}
-
 Element*
 Element::Closest(const nsAString& aSelector, ErrorResult& aResult)
 {
   nsCSSSelectorList* selectorList = ParseSelectorList(aSelector, aResult);
   if (!selectorList) {
     // Either we failed (and aResult already has the exception), or this
     // is a pseudo-element-only selector that matches nothing.
     return nullptr;
--- a/dom/base/Element.h
+++ b/dom/base/Element.h
@@ -1331,18 +1331,16 @@ protected:
    * this gets the value of the xlink:_moz_target attribute, or failing that,
    * the value of xlink:show, converted to a suitably equivalent named target
    * (e.g. _blank).
    */
   virtual void GetLinkTarget(nsAString& aTarget);
 
   nsDOMTokenList* GetTokenList(nsIAtom* aAtom,
                                const DOMTokenListSupportedTokenArray aSupportedTokens = nullptr);
-  void GetTokenList(nsIAtom* aAtom, nsIVariant** aResult);
-  nsresult SetTokenList(nsIAtom* aAtom, nsIVariant* aValue);
 
 private:
   /**
    * Get this element's client area rect in app units.
    * @return the frame's client area
    */
   nsRect GetClientAreaRect();
 
--- a/dom/base/nsGkAtomList.h
+++ b/dom/base/nsGkAtomList.h
@@ -597,17 +597,16 @@ GK_ATOM(menulist, "menulist")
 GK_ATOM(menupopup, "menupopup")
 GK_ATOM(menuseparator, "menuseparator")
 GK_ATOM(message, "message")
 GK_ATOM(meta, "meta")
 GK_ATOM(referrer, "referrer")
 GK_ATOM(referrerpolicy, "referrerpolicy")
 GK_ATOM(meter, "meter")
 GK_ATOM(method, "method")
-GK_ATOM(microdataProperties, "microdataProperties")
 GK_ATOM(middle, "middle")
 GK_ATOM(min, "min")
 GK_ATOM(minheight, "minheight")
 GK_ATOM(minimum_scale, "minimum-scale")
 GK_ATOM(minpos, "minpos")
 GK_ATOM(minusSign, "minus-sign")
 GK_ATOM(minwidth, "minwidth")
 GK_ATOM(_mixed, "mixed")
--- a/dom/bindings/Bindings.conf
+++ b/dom/bindings/Bindings.conf
@@ -569,20 +569,16 @@ DOMInterfaces = {
 'HTMLOListElement': {
     'nativeType' : 'mozilla::dom::HTMLSharedListElement'
 },
 
 'HTMLParamElement': {
     'nativeType': 'mozilla::dom::HTMLSharedElement'
 },
 
-'HTMLPropertiesCollection': {
-    'headerFile': 'HTMLPropertiesCollection.h',
-},
-
 'HTMLQuoteElement': {
     'nativeType': 'mozilla::dom::HTMLSharedElement'
 },
 
 'HTMLTextAreaElement': {
     'binaryNames': {
         'textLength': 'getTextLength'
     }
@@ -924,20 +920,16 @@ DOMInterfaces = {
 'PromiseDebugging': {
     'concrete': False,
 },
 
 'PromiseNativeHandler': {
     'wrapperCache': False,
 },
 
-'PropertyNodeList': {
-    'headerFile': 'HTMLPropertiesCollection.h',
-},
-
 'PushEvent': {
     'headerFile': 'ServiceWorkerEvents.h',
     'nativeType': 'mozilla::dom::workers::PushEvent',
 },
 
 'PushMessageData': {
     'headerFile': 'ServiceWorkerEvents.h',
     'nativeType': 'mozilla::dom::workers::PushMessageData',
--- a/dom/html/HTMLAnchorElement.cpp
+++ b/dom/html/HTMLAnchorElement.cpp
@@ -97,28 +97,16 @@ NS_IMPL_STRING_ATTR(HTMLAnchorElement, T
 NS_IMPL_STRING_ATTR(HTMLAnchorElement, Download, download)
 
 int32_t
 HTMLAnchorElement::TabIndexDefault()
 {
   return 0;
 }
 
-void
-HTMLAnchorElement::GetItemValueText(DOMString& aValue)
-{
-  GetHref(aValue);
-}
-
-void
-HTMLAnchorElement::SetItemValueText(const nsAString& aValue)
-{
-  SetHref(aValue);
-}
-
 bool
 HTMLAnchorElement::Draggable() const
 {
   // links can be dragged as long as there is an href and the
   // draggable attribute isn't false
   if (!HasAttr(kNameSpaceID_None, nsGkAtoms::href)) {
     // no href, so just use the same behavior as other elements
     return nsGenericHTMLElement::Draggable();
--- a/dom/html/HTMLAnchorElement.h
+++ b/dom/html/HTMLAnchorElement.h
@@ -227,18 +227,16 @@ public:
     GetHref(aResult);
   }
 
   static DOMTokenListSupportedToken sSupportedRelValues[];
 
 protected:
   virtual ~HTMLAnchorElement();
 
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
   virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
   RefPtr<nsDOMTokenList > mRelList;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_HTMLAnchorElement_h
--- a/dom/html/HTMLAreaElement.cpp
+++ b/dom/html/HTMLAreaElement.cpp
@@ -60,28 +60,16 @@ NS_IMPL_STRING_ATTR(HTMLAreaElement, Sha
 NS_IMPL_STRING_ATTR(HTMLAreaElement, Download, download)
 
 int32_t
 HTMLAreaElement::TabIndexDefault()
 {
   return 0;
 }
 
-void
-HTMLAreaElement::GetItemValueText(DOMString& aValue)
-{
-  GetHref(aValue);
-}
-
-void
-HTMLAreaElement::SetItemValueText(const nsAString& aValue)
-{
-  SetHref(aValue);
-}
-
 NS_IMETHODIMP
 HTMLAreaElement::GetTarget(nsAString& aValue)
 {
   if (!GetAttr(kNameSpaceID_None, nsGkAtoms::target, aValue)) {
     GetBaseTarget(aValue);
   }
   return NS_OK;
 }
--- a/dom/html/HTMLAreaElement.h
+++ b/dom/html/HTMLAreaElement.h
@@ -180,17 +180,15 @@ public:
     GetHref(aResult);
   }
 
 protected:
   virtual ~HTMLAreaElement();
 
   virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
   RefPtr<nsDOMTokenList > mRelList;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif /* mozilla_dom_HTMLAreaElement_h */
--- a/dom/html/HTMLDataElement.cpp
+++ b/dom/html/HTMLDataElement.cpp
@@ -25,23 +25,10 @@ HTMLDataElement::~HTMLDataElement()
 NS_IMPL_ELEMENT_CLONE(HTMLDataElement)
 
 JSObject*
 HTMLDataElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
 {
   return HTMLDataElementBinding::Wrap(aCx, this, aGivenProto);
 }
 
-void
-HTMLDataElement::GetItemValueText(DOMString& text)
-{
-  GetValue(text);
-}
-
-void
-HTMLDataElement::SetItemValueText(const nsAString& text)
-{
-  ErrorResult rv;
-  SetValue(text, rv);
-}
-
 } // namespace dom
 } // namespace mozilla
--- a/dom/html/HTMLDataElement.h
+++ b/dom/html/HTMLDataElement.h
@@ -26,18 +26,16 @@ public:
     GetHTMLAttr(nsGkAtoms::value, aValue);
   }
 
   void SetValue(const nsAString& aValue, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::value, aValue, aError);
   }
 
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
   virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override;
 
 protected:
   virtual ~HTMLDataElement();
 
   virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 };
 
--- a/dom/html/HTMLIFrameElement.cpp
+++ b/dom/html/HTMLIFrameElement.cpp
@@ -50,28 +50,16 @@ NS_IMPL_STRING_ATTR(HTMLIFrameElement, M
 NS_IMPL_STRING_ATTR(HTMLIFrameElement, MarginWidth, marginwidth)
 NS_IMPL_STRING_ATTR(HTMLIFrameElement, Name, name)
 NS_IMPL_STRING_ATTR(HTMLIFrameElement, Scrolling, scrolling)
 NS_IMPL_URI_ATTR(HTMLIFrameElement, Src, src)
 NS_IMPL_STRING_ATTR(HTMLIFrameElement, Width, width)
 NS_IMPL_BOOL_ATTR(HTMLIFrameElement, AllowFullscreen, allowfullscreen)
 NS_IMPL_STRING_ATTR(HTMLIFrameElement, Srcdoc, srcdoc)
 
-void
-HTMLIFrameElement::GetItemValueText(DOMString& aValue)
-{
-  GetSrc(aValue);
-}
-
-void
-HTMLIFrameElement::SetItemValueText(const nsAString& aValue)
-{
-  SetSrc(aValue);
-}
-
 NS_IMETHODIMP
 HTMLIFrameElement::GetContentDocument(nsIDOMDocument** aContentDocument)
 {
   return nsGenericHTMLFrameElement::GetContentDocument(aContentDocument);
 }
 
 bool
 HTMLIFrameElement::ParseAttribute(int32_t aNamespaceID,
--- a/dom/html/HTMLIFrameElement.h
+++ b/dom/html/HTMLIFrameElement.h
@@ -188,19 +188,16 @@ public:
   // set, the fullscreen state of this element will not be reverted
   // automatically when its subdocument exits fullscreen.
   bool FullscreenFlag() const { return mFullscreenFlag; }
   void SetFullscreenFlag(bool aValue) { mFullscreenFlag = aValue; }
 
 protected:
   virtual ~HTMLIFrameElement();
 
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
-
   virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 
 private:
   static void MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
                                     nsRuleData* aData);
 
   static const DOMTokenListSupportedToken sSupportedSandboxTokens[];
 };
--- a/dom/html/HTMLImageElement.cpp
+++ b/dom/html/HTMLImageElement.cpp
@@ -190,28 +190,16 @@ HTMLImageElement::GetCurrentSrc(nsAStrin
     CopyUTF8toUTF16(spec, aValue);
   } else {
     SetDOMStringToNull(aValue);
   }
 
   return NS_OK;
 }
 
-void
-HTMLImageElement::GetItemValueText(DOMString& aValue)
-{
-  GetSrc(aValue);
-}
-
-void
-HTMLImageElement::SetItemValueText(const nsAString& aValue)
-{
-  SetSrc(aValue);
-}
-
 bool
 HTMLImageElement::Draggable() const
 {
   // images may be dragged unless the draggable attribute is false
   return !AttrValueIs(kNameSpaceID_None, nsGkAtoms::draggable,
                       nsGkAtoms::_false, eIgnoreCase);
 }
 
--- a/dom/html/HTMLImageElement.h
+++ b/dom/html/HTMLImageElement.h
@@ -333,18 +333,16 @@ protected:
   // If the node's srcset/sizes make for an invalid selector, returns
   // false. This does not guarantee the resulting selector matches an image,
   // only that it is valid.
   bool TryCreateResponsiveSelector(nsIContent *aSourceNode,
                                    const nsAString *aSrcset = nullptr,
                                    const nsAString *aSizes = nullptr);
 
   CSSIntPoint GetXY();
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
   virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
   void UpdateFormOwner();
 
   virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
                                  nsAttrValueOrString* aValue,
                                  bool aNotify) override;
 
   virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
--- a/dom/html/HTMLLinkElement.cpp
+++ b/dom/html/HTMLLinkElement.cpp
@@ -127,28 +127,16 @@ NS_IMPL_URI_ATTR(HTMLLinkElement, Href, 
 NS_IMPL_STRING_ATTR(HTMLLinkElement, Hreflang, hreflang)
 NS_IMPL_STRING_ATTR(HTMLLinkElement, Media, media)
 NS_IMPL_STRING_ATTR(HTMLLinkElement, Rel, rel)
 NS_IMPL_STRING_ATTR(HTMLLinkElement, Rev, rev)
 NS_IMPL_STRING_ATTR(HTMLLinkElement, Target, target)
 NS_IMPL_STRING_ATTR(HTMLLinkElement, Type, type)
 
 void
-HTMLLinkElement::GetItemValueText(DOMString& aValue)
-{
-  GetHref(aValue);
-}
-
-void
-HTMLLinkElement::SetItemValueText(const nsAString& aValue)
-{
-  SetHref(aValue);
-}
-
-void
 HTMLLinkElement::OnDNSPrefetchRequested()
 {
   UnsetFlags(HTML_LINK_DNS_PREFETCH_DEFERRED);
   SetFlags(HTML_LINK_DNS_PREFETCH_REQUESTED);
 }
 
 void
 HTMLLinkElement::OnDNSPrefetchDeferred()
--- a/dom/html/HTMLLinkElement.h
+++ b/dom/html/HTMLLinkElement.h
@@ -164,21 +164,18 @@ protected:
   // nsStyleLinkElement
   virtual already_AddRefed<nsIURI> GetStyleSheetURL(bool* aIsInline) override;
   virtual void GetStyleSheetInfo(nsAString& aTitle,
                                  nsAString& aType,
                                  nsAString& aMedia,
                                  bool* aIsScoped,
                                  bool* aIsAlternate) override;
 protected:
-  // nsGenericHTMLElement
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
+  RefPtr<nsDOMTokenList> mRelList;
 
-  RefPtr<nsDOMTokenList > mRelList;
 private:
   RefPtr<ImportLoader> mImportLoader;
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_HTMLLinkElement_h
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -2320,30 +2320,16 @@ HTMLMediaElement::~HTMLMediaElement()
 
   if (mChannel) {
     mChannel->Cancel(NS_BINDING_ABORTED);
   }
 
   WakeLockRelease();
 }
 
-void
-HTMLMediaElement::GetItemValueText(DOMString& aValue)
-{
-  // Can't call GetSrc because we don't have a JSContext
-  GetURIAttr(nsGkAtoms::src, nullptr, aValue);
-}
-
-void
-HTMLMediaElement::SetItemValueText(const nsAString& aValue)
-{
-  // Can't call SetSrc because we don't have a JSContext
-  SetAttr(kNameSpaceID_None, nsGkAtoms::src, aValue, true);
-}
-
 void HTMLMediaElement::StopSuspendingAfterFirstFrame()
 {
   mAllowSuspendAfterFirstFrame = false;
   if (!mSuspendedAfterFirstFrame)
     return;
   mSuspendedAfterFirstFrame = false;
   if (mDecoder) {
     mDecoder->Resume();
--- a/dom/html/HTMLMediaElement.h
+++ b/dom/html/HTMLMediaElement.h
@@ -738,19 +738,16 @@ protected:
   class StreamSizeListener;
 
   MediaDecoderOwner::NextFrameStatus NextFrameStatus();
   void SetDecoder(MediaDecoder* aDecoder) {
     MOZ_ASSERT(aDecoder); // Use ShutdownDecoder() to clear.
     mDecoder = aDecoder;
   }
 
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
-
   class WakeLockBoolWrapper {
   public:
     explicit WakeLockBoolWrapper(bool val = false)
       : mValue(val), mCanPlay(true), mOuter(nullptr) {}
 
     ~WakeLockBoolWrapper();
 
     void SetOuter(HTMLMediaElement* outer) { mOuter = outer; }
--- a/dom/html/HTMLMetaElement.cpp
+++ b/dom/html/HTMLMetaElement.cpp
@@ -33,28 +33,16 @@ NS_IMPL_ISUPPORTS_INHERITED(HTMLMetaElem
 NS_IMPL_ELEMENT_CLONE(HTMLMetaElement)
 
 
 NS_IMPL_STRING_ATTR(HTMLMetaElement, Content, content)
 NS_IMPL_STRING_ATTR(HTMLMetaElement, HttpEquiv, httpEquiv)
 NS_IMPL_STRING_ATTR(HTMLMetaElement, Name, name)
 NS_IMPL_STRING_ATTR(HTMLMetaElement, Scheme, scheme)
 
-void
-HTMLMetaElement::GetItemValueText(DOMString& aValue)
-{
-  GetContent(aValue);
-}
-
-void
-HTMLMetaElement::SetItemValueText(const nsAString& aValue)
-{
-  SetContent(aValue);
-}
-
 nsresult
 HTMLMetaElement::SetMetaReferrer(nsIDocument* aDocument)
 {
   if (!aDocument ||
       !AttrValueIs(kNameSpaceID_None, nsGkAtoms::name, nsGkAtoms::referrer, eIgnoreCase)) {
     return NS_OK;
   }
   nsAutoString content;
--- a/dom/html/HTMLMetaElement.h
+++ b/dom/html/HTMLMetaElement.h
@@ -60,19 +60,16 @@ public:
     SetHTMLAttr(nsGkAtoms::scheme, aScheme, aRv);
   }
 
   virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 
 protected:
   virtual ~HTMLMetaElement();
 
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
-
 private:
   nsresult SetMetaReferrer(nsIDocument* aDocument);
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_HTMLMetaElement_h
--- a/dom/html/HTMLObjectElement.cpp
+++ b/dom/html/HTMLObjectElement.cpp
@@ -239,28 +239,16 @@ HTMLObjectElement::PostHandleEvent(Event
 #endif // #ifdef XP_MACOSX
 
 NS_IMETHODIMP
 HTMLObjectElement::GetForm(nsIDOMHTMLFormElement **aForm)
 {
   return nsGenericHTMLFormElement::GetForm(aForm);
 }
 
-void
-HTMLObjectElement::GetItemValueText(DOMString& aValue)
-{
-  GetData(aValue);
-}
-
-void
-HTMLObjectElement::SetItemValueText(const nsAString& aValue)
-{
-  SetData(aValue);
-}
-
 nsresult
 HTMLObjectElement::BindToTree(nsIDocument *aDocument,
                               nsIContent *aParent,
                               nsIContent *aBindingParent,
                               bool aCompileEventHandlers)
 {
   nsresult rv = nsGenericHTMLFormElement::BindToTree(aDocument, aParent,
                                                      aBindingParent,
--- a/dom/html/HTMLObjectElement.h
+++ b/dom/html/HTMLObjectElement.h
@@ -249,19 +249,16 @@ private:
    */
   bool IsFocusableForTabIndex();
 
   nsContentPolicyType GetContentPolicyType() const override
   {
     return nsIContentPolicy::TYPE_INTERNAL_OBJECT;
   }
 
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
-
   virtual ~HTMLObjectElement();
 
   virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
 
   static void MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
                                     nsRuleData* aData);
 
   bool mIsDoneAddingChildren;
deleted file mode 100644
--- a/dom/html/HTMLPropertiesCollection.cpp
+++ /dev/null
@@ -1,518 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "HTMLPropertiesCollection.h"
-#include "nsIDocument.h"
-#include "nsContentUtils.h"
-#include "nsGenericHTMLElement.h"
-#include "nsVariant.h"
-#include "nsDOMTokenList.h"
-#include "nsAttrValue.h"
-#include "nsWrapperCacheInlines.h"
-#include "mozilla/dom/HTMLPropertiesCollectionBinding.h"
-#include "jsapi.h"
-#include "MainThreadUtils.h"
-#include "mozilla/Assertions.h"
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_CYCLE_COLLECTION_CLASS(HTMLPropertiesCollection)
-
-NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(HTMLPropertiesCollection)
-  // SetDocument(nullptr) ensures that we remove ourselves as a mutation observer
-  tmp->SetDocument(nullptr);
-  NS_IMPL_CYCLE_COLLECTION_UNLINK(mRoot)
-  NS_IMPL_CYCLE_COLLECTION_UNLINK(mNames)
-  NS_IMPL_CYCLE_COLLECTION_UNLINK(mNamedItemEntries)
-  NS_IMPL_CYCLE_COLLECTION_UNLINK(mProperties)
-  NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
-NS_IMPL_CYCLE_COLLECTION_UNLINK_END
-NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(HTMLPropertiesCollection)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDoc)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mRoot)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mNames)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mNamedItemEntries);
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mProperties)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
-NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
-NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(HTMLPropertiesCollection)
-  NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
-NS_IMPL_CYCLE_COLLECTION_TRACE_END
-
-HTMLPropertiesCollection::HTMLPropertiesCollection(nsGenericHTMLElement* aRoot)
-  : mRoot(aRoot)
-  , mDoc(aRoot->GetUncomposedDoc())
-  , mIsDirty(true)
-{
-  mNames = new PropertyStringList(this);
-  if (mDoc) {
-    mDoc->AddMutationObserver(this);
-  }
-}
-
-HTMLPropertiesCollection::~HTMLPropertiesCollection()
-{
-  if (mDoc) {
-    mDoc->RemoveMutationObserver(this);
-  }
-}
-
-NS_INTERFACE_TABLE_HEAD(HTMLPropertiesCollection)
-    NS_WRAPPERCACHE_INTERFACE_TABLE_ENTRY
-    NS_INTERFACE_TABLE(HTMLPropertiesCollection,
-                       nsIDOMHTMLCollection,
-                       nsIHTMLCollection,
-                       nsIMutationObserver)
-    NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(HTMLPropertiesCollection)
-NS_INTERFACE_MAP_END
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(HTMLPropertiesCollection)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(HTMLPropertiesCollection)
-
-void
-HTMLPropertiesCollection::SetDocument(nsIDocument* aDocument) {
-  if (mDoc) {
-    mDoc->RemoveMutationObserver(this);
-  }
-  mDoc = aDocument;
-  if (mDoc) {
-    mDoc->AddMutationObserver(this);
-  }
-  for (auto iter = mNamedItemEntries.Iter(); !iter.Done(); iter.Next()) {
-    iter.UserData()->SetDocument(aDocument);
-  }
-  mIsDirty = true;
-}
-
-JSObject*
-HTMLPropertiesCollection::WrapObject(JSContext* cx, JS::Handle<JSObject*> aGivenProto)
-{
-  return HTMLPropertiesCollectionBinding::Wrap(cx, this, aGivenProto);
-}
-
-NS_IMETHODIMP
-HTMLPropertiesCollection::GetLength(uint32_t* aLength)
-{
-  EnsureFresh();
-  *aLength = mProperties.Length();
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLPropertiesCollection::Item(uint32_t aIndex, nsIDOMNode** aResult)
-{
-  nsINode* result = nsIHTMLCollection::Item(aIndex);
-  if (result) {
-    NS_ADDREF(*aResult = result->AsDOMNode());
-  } else {
-    *aResult = nullptr;
-  }
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-HTMLPropertiesCollection::NamedItem(const nsAString& aName,
-                                    nsIDOMNode** aResult)
-{
-  *aResult = nullptr;
-  return NS_OK;
-}
-
-Element*
-HTMLPropertiesCollection::GetElementAt(uint32_t aIndex)
-{
-  EnsureFresh();
-  return mProperties.SafeElementAt(aIndex);
-}
-
-nsINode*
-HTMLPropertiesCollection::GetParentObject()
-{
-  return mRoot;
-}
-
-PropertyNodeList*
-HTMLPropertiesCollection::NamedItem(const nsAString& aName)
-{
-  EnsureFresh();
-
-  PropertyNodeList* propertyList = mNamedItemEntries.GetWeak(aName);
-  if (!propertyList) {
-    RefPtr<PropertyNodeList> newPropertyList =
-      new PropertyNodeList(this, mRoot, aName);
-    mNamedItemEntries.Put(aName, newPropertyList);
-    propertyList = newPropertyList;
-  }
-  return propertyList;
-}
-
-void
-HTMLPropertiesCollection::AttributeChanged(nsIDocument *aDocument, Element* aElement,
-                                           int32_t aNameSpaceID, nsIAtom* aAttribute,
-                                           int32_t aModType,
-                                           const nsAttrValue* aOldValue)
-{
-  mIsDirty = true;
-}
-
-void
-HTMLPropertiesCollection::ContentAppended(nsIDocument* aDocument, nsIContent* aContainer,
-                                          nsIContent* aFirstNewContent,
-                                          int32_t aNewIndexInContainer)
-{
-  mIsDirty = true;
-}
-
-void
-HTMLPropertiesCollection::ContentInserted(nsIDocument *aDocument,
-                                          nsIContent* aContainer,
-                                          nsIContent* aChild,
-                                          int32_t aIndexInContainer)
-{
-  mIsDirty = true;
-}
-
-void
-HTMLPropertiesCollection::ContentRemoved(nsIDocument *aDocument,
-                                         nsIContent* aContainer,
-                                         nsIContent* aChild,
-                                         int32_t aIndexInContainer,
-                                         nsIContent* aPreviousSibling)
-{
-  mIsDirty = true;
-}
-
-void
-HTMLPropertiesCollection::EnsureFresh()
-{
-  if (mDoc && !mIsDirty) {
-    return;
-  }
-  mIsDirty = false;
-
-  mProperties.Clear();
-  mNames->Clear();
-  // We don't clear NamedItemEntries because the PropertyNodeLists must be live.
-  for (auto iter = mNamedItemEntries.Iter(); !iter.Done(); iter.Next()) {
-    iter.UserData()->SetDirty();
-  }
-  if (!mRoot->HasAttr(kNameSpaceID_None, nsGkAtoms::itemscope)) {
-    return;
-  }
-
-  CrawlProperties();
-  TreeOrderComparator comparator;
-  mProperties.Sort(comparator);
-
-  // Create the names DOMStringList
-  uint32_t count = mProperties.Length();
-  for (uint32_t i = 0; i < count; ++i) {
-    const nsAttrValue* attr = mProperties.ElementAt(i)->GetParsedAttr(nsGkAtoms::itemprop); 
-    for (uint32_t i = 0; i < attr->GetAtomCount(); i++) {
-      nsDependentAtomString propName(attr->AtomAt(i));
-      bool contains = mNames->ContainsInternal(propName);
-      if (!contains) {
-        mNames->Add(propName);
-      }
-    }
-  }
-}
-
-static Element*
-GetElementByIdForConnectedSubtree(nsIContent* aContent, const nsIAtom* aId)
-{
-  aContent = static_cast<nsIContent*>(aContent->SubtreeRoot());
-  do {
-    if (aContent->GetID() == aId) {
-      return aContent->AsElement();
-    }
-    aContent = aContent->GetNextNode();
-  } while(aContent);
-
-  return nullptr;
-}
-
-void
-HTMLPropertiesCollection::CrawlProperties()
-{
-  nsIDocument* doc = mRoot->GetUncomposedDoc();
-
-  const nsAttrValue* attr = mRoot->GetParsedAttr(nsGkAtoms::itemref);
-  if (attr) {
-    for (uint32_t i = 0; i < attr->GetAtomCount(); i++) {
-      nsIAtom* ref = attr->AtomAt(i);
-      Element* element;
-      if (doc) {
-        element = doc->GetElementById(nsDependentAtomString(ref));
-      } else {
-        element = GetElementByIdForConnectedSubtree(mRoot, ref);
-      }
-      if (element && element != mRoot) {
-        CrawlSubtree(element);
-      }
-    }
-  }
-
-  CrawlSubtree(mRoot);
-}
-
-void
-HTMLPropertiesCollection::CrawlSubtree(Element* aElement)
-{
-  nsIContent* aContent = aElement;
-  while (aContent) {
-    // We must check aContent against mRoot because 
-    // an element must not be its own property
-    if (aContent == mRoot || !aContent->IsHTMLElement()) {
-      // Move on to the next node in the tree
-      aContent = aContent->GetNextNode(aElement);
-    } else {
-      MOZ_ASSERT(aContent->IsElement(), "IsHTMLElement() returned true!");
-      Element* element = aContent->AsElement();
-      if (element->HasAttr(kNameSpaceID_None, nsGkAtoms::itemprop) &&
-          !mProperties.Contains(element)) {
-        mProperties.AppendElement(static_cast<nsGenericHTMLElement*>(element));
-      }
-
-      if (element->HasAttr(kNameSpaceID_None, nsGkAtoms::itemscope)) {
-        aContent = element->GetNextNonChildNode(aElement);
-      } else {
-        aContent = element->GetNextNode(aElement);
-      }
-    }
-  }
-}
-
-void
-HTMLPropertiesCollection::GetSupportedNames(nsTArray<nsString>& aNames)
-{
-  EnsureFresh();
-  mNames->CopyList(aNames);
-}
-
-PropertyNodeList::PropertyNodeList(HTMLPropertiesCollection* aCollection,
-                                   nsIContent* aParent, const nsAString& aName)
-  : mName(aName),
-    mDoc(aParent->GetUncomposedDoc()),
-    mCollection(aCollection),
-    mParent(aParent),
-    mIsDirty(true)
-{
-  if (mDoc) {
-    mDoc->AddMutationObserver(this);
-  }
-}
-
-PropertyNodeList::~PropertyNodeList()
-{
-  if (mDoc) {
-    mDoc->RemoveMutationObserver(this);
-  }
-}
-
-void
-PropertyNodeList::SetDocument(nsIDocument* aDoc)
-{
-  if (mDoc) {
-    mDoc->RemoveMutationObserver(this);
-  }
-  mDoc = aDoc;
-  if (mDoc) {
-    mDoc->AddMutationObserver(this);
-  }
-  mIsDirty = true;
-}
-
-NS_IMETHODIMP
-PropertyNodeList::GetLength(uint32_t* aLength)
-{
-  EnsureFresh();
-  *aLength = mElements.Length();
-  return NS_OK;
-}
-
-NS_IMETHODIMP
-PropertyNodeList::Item(uint32_t aIndex, nsIDOMNode** aReturn)
-{
-  EnsureFresh();
-  nsINode* element = mElements.SafeElementAt(aIndex);
-  if (!element) {
-    *aReturn = nullptr;
-    return NS_OK;
-  }
-  return CallQueryInterface(element, aReturn);
-}
-
-nsIContent*
-PropertyNodeList::Item(uint32_t aIndex)
-{
-  EnsureFresh();
-  return mElements.SafeElementAt(aIndex);
-}
-
-int32_t
-PropertyNodeList::IndexOf(nsIContent* aContent)
-{
-  EnsureFresh();
-  return mElements.IndexOf(aContent);
-}
-
-nsINode*
-PropertyNodeList::GetParentObject()
-{
-  return mParent;
-}
-
-JSObject*
-PropertyNodeList::WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto)
-{
-  return PropertyNodeListBinding::Wrap(cx, this, aGivenProto);
-}
-
-NS_IMPL_CYCLE_COLLECTION_CLASS(PropertyNodeList)
-
-NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(PropertyNodeList)
-  // SetDocument(nullptr) ensures that we remove ourselves as a mutation observer
-  tmp->SetDocument(nullptr);
-  NS_IMPL_CYCLE_COLLECTION_UNLINK(mParent)
-  NS_IMPL_CYCLE_COLLECTION_UNLINK(mCollection)
-  NS_IMPL_CYCLE_COLLECTION_UNLINK(mElements)
-  NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
-NS_IMPL_CYCLE_COLLECTION_UNLINK_END
-NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(PropertyNodeList)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDoc)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mParent)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCollection)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mElements)
-  NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
-NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
-NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(PropertyNodeList)
-  NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
-NS_IMPL_CYCLE_COLLECTION_TRACE_END
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(PropertyNodeList)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(PropertyNodeList)
-
-NS_INTERFACE_TABLE_HEAD(PropertyNodeList)
-    NS_WRAPPERCACHE_INTERFACE_TABLE_ENTRY
-    NS_INTERFACE_TABLE(PropertyNodeList,
-                       nsIDOMNodeList,
-                       nsINodeList,
-                       nsIMutationObserver)
-    NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(PropertyNodeList)
-NS_INTERFACE_MAP_END
-
-void
-PropertyNodeList::GetValues(JSContext* aCx, nsTArray<JS::Value >& aResult,
-                            ErrorResult& aError)
-{
-  EnsureFresh();
-
-  JS::Rooted<JSObject*> wrapper(aCx, GetWrapper());
-  JSAutoCompartment ac(aCx, wrapper);
-  uint32_t length = mElements.Length();
-  for (uint32_t i = 0; i < length; ++i) {
-    JS::Rooted<JS::Value> v(aCx);
-    mElements.ElementAt(i)->GetItemValue(aCx, wrapper, &v, aError);
-    if (aError.Failed()) {
-      return;
-    }
-    aResult.AppendElement(v);
-  }
-}
-
-void
-PropertyNodeList::AttributeChanged(nsIDocument* aDocument, Element* aElement,
-                                   int32_t aNameSpaceID, nsIAtom* aAttribute,
-                                   int32_t aModType,
-                                   const nsAttrValue* aOldValue)
-{
-  mIsDirty = true;
-}
-
-void
-PropertyNodeList::ContentAppended(nsIDocument* aDocument, nsIContent* aContainer,
-                                  nsIContent* aFirstNewContent,
-                                  int32_t aNewIndexInContainer)
-{
-  mIsDirty = true;
-}
-
-void
-PropertyNodeList::ContentInserted(nsIDocument* aDocument,
-                                  nsIContent* aContainer,
-                                  nsIContent* aChild,
-                                  int32_t aIndexInContainer)
-{
-  mIsDirty = true;
-}
-
-void
-PropertyNodeList::ContentRemoved(nsIDocument* aDocument,
-                                 nsIContent* aContainer,
-                                 nsIContent* aChild,
-                                 int32_t aIndexInContainer,
-                                 nsIContent* aPreviousSibling)
-{
-  mIsDirty = true;
-}
-
-void
-PropertyNodeList::EnsureFresh()
-{
-  if (mDoc && !mIsDirty) {
-    return;
-  }
-  mIsDirty = false;
-
-  mCollection->EnsureFresh();
-  Clear();
-
-  uint32_t count = mCollection->mProperties.Length();
-  for (uint32_t i = 0; i < count; ++i) {
-    nsGenericHTMLElement* element = mCollection->mProperties.ElementAt(i);
-    const nsAttrValue* attr = element->GetParsedAttr(nsGkAtoms::itemprop);
-    if (attr->Contains(mName)) {
-      AppendElement(element);
-    }
-  }
-}
-
-PropertyStringList::PropertyStringList(HTMLPropertiesCollection* aCollection)
-  : DOMStringList()
-  , mCollection(aCollection)
-{ }
-
-PropertyStringList::~PropertyStringList()
-{ }
-
-NS_IMPL_CYCLE_COLLECTION_INHERITED(PropertyStringList, DOMStringList,
-                                   mCollection)
-
-NS_IMPL_ADDREF_INHERITED(PropertyStringList, DOMStringList)
-NS_IMPL_RELEASE_INHERITED(PropertyStringList, DOMStringList)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(PropertyStringList)
-NS_INTERFACE_MAP_END_INHERITING(DOMStringList)
-
-void
-PropertyStringList::EnsureFresh()
-{
-  MOZ_ASSERT(NS_IsMainThread());
-
-  mCollection->EnsureFresh();
-}
-
-bool
-PropertyStringList::ContainsInternal(const nsAString& aString)
-{
-  // This method should not call EnsureFresh, otherwise we may become stuck in an infinite loop.
-  return mNames.Contains(aString);
-}
-
-} // namespace dom
-} // namespace mozilla
deleted file mode 100644
--- a/dom/html/HTMLPropertiesCollection.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef HTMLPropertiesCollection_h_
-#define HTMLPropertiesCollection_h_
-
-#include "mozilla/Attributes.h"
-#include "mozilla/dom/DOMStringList.h"
-#include "nsCycleCollectionParticipant.h"
-#include "nsAutoPtr.h"
-#include "nsCOMArray.h"
-#include "nsIMutationObserver.h"
-#include "nsStubMutationObserver.h"
-#include "nsBaseHashtable.h"
-#include "nsINodeList.h"
-#include "nsIHTMLCollection.h"
-#include "nsHashKeys.h"
-#include "nsRefPtrHashtable.h"
-#include "nsGenericHTMLElement.h"
-
-class nsIDocument;
-class nsINode;
-
-namespace mozilla {
-namespace dom {
-
-class HTMLPropertiesCollection;
-class PropertyNodeList;
-class Element;
-
-class PropertyStringList : public DOMStringList
-{
-public:
-  explicit PropertyStringList(HTMLPropertiesCollection* aCollection);
-  NS_DECL_ISUPPORTS_INHERITED
-  NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(PropertyStringList, DOMStringList)
-
-  bool ContainsInternal(const nsAString& aString);
-
-protected:
-  virtual ~PropertyStringList();
-
-  virtual void EnsureFresh() override;
-
-  RefPtr<HTMLPropertiesCollection> mCollection;
-};
-
-class HTMLPropertiesCollection final : public nsIHTMLCollection,
-                                       public nsStubMutationObserver,
-                                       public nsWrapperCache
-{
-  friend class PropertyNodeList;
-  friend class PropertyStringList;
-public:
-  explicit HTMLPropertiesCollection(nsGenericHTMLElement* aRoot);
-
-  // nsWrapperCache
-  using nsWrapperCache::GetWrapperPreserveColor;
-  using nsWrapperCache::GetWrapper;
-  virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
-protected:
-  virtual ~HTMLPropertiesCollection();
-
-  virtual JSObject* GetWrapperPreserveColorInternal() override
-  {
-    return nsWrapperCache::GetWrapperPreserveColor();
-  }
-public:
-
-  virtual Element* GetElementAt(uint32_t aIndex) override;
-
-  void SetDocument(nsIDocument* aDocument);
-  nsINode* GetParentObject() override;
-
-  virtual Element*
-  GetFirstNamedElement(const nsAString& aName, bool& aFound) override
-  {
-    // HTMLPropertiesCollection.namedItem and the named getter call the
-    // NamedItem that returns a PropertyNodeList, calling
-    // HTMLCollection.namedItem doesn't make sense so this returns null.
-    aFound = false;
-    return nullptr;
-  }
-  PropertyNodeList* NamedItem(const nsAString& aName);
-  PropertyNodeList* NamedGetter(const nsAString& aName, bool& aFound)
-  {
-    aFound = IsSupportedNamedProperty(aName);
-    return aFound ? NamedItem(aName) : nullptr;
-  }
-  DOMStringList* Names()
-  {
-    EnsureFresh();
-    return mNames;
-  }
-  virtual void GetSupportedNames(nsTArray<nsString>& aNames) override;
-
-  NS_DECL_NSIDOMHTMLCOLLECTION
-
-  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
-
-  NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
-  NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
-  NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
-  NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
-
-  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(HTMLPropertiesCollection,
-                                                         nsIHTMLCollection)
-
-protected:
-  // Make sure this collection is up to date, in case the DOM has been mutated.
-  void EnsureFresh();
-
-  // Crawl the properties of mRoot, following any itemRefs it may have
-  void CrawlProperties();
-
-  // Crawl startNode and its descendants, looking for items
-  void CrawlSubtree(Element* startNode);
-
-  bool IsSupportedNamedProperty(const nsAString& aName)
-  {
-    EnsureFresh();
-    return mNames->ContainsInternal(aName);
-  }
-
-  // the items that make up this collection
-  nsTArray<RefPtr<nsGenericHTMLElement> > mProperties;
-
-  // the itemprop attribute of the properties
-  RefPtr<PropertyStringList> mNames;
-
-  // The cached PropertyNodeLists that are NamedItems of this collection
-  nsRefPtrHashtable<nsStringHashKey, PropertyNodeList> mNamedItemEntries;
-
-  // The element this collection is rooted at
-  RefPtr<nsGenericHTMLElement> mRoot;
-
-  // The document mRoot is in, if any
-  nsCOMPtr<nsIDocument> mDoc;
-
-  // True if there have been DOM modifications since the last EnsureFresh call.
-  bool mIsDirty;
-};
-
-class PropertyNodeList final : public nsINodeList,
-                               public nsStubMutationObserver
-{
-public:
-  PropertyNodeList(HTMLPropertiesCollection* aCollection,
-                   nsIContent* aRoot, const nsAString& aName);
-
-  virtual JSObject* WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto) override;
-
-  void SetDocument(nsIDocument* aDocument);
-
-  void GetValues(JSContext* aCx, nsTArray<JS::Value >& aResult,
-                 ErrorResult& aError);
-
-  virtual nsIContent* Item(uint32_t aIndex) override;
-
-  NS_DECL_CYCLE_COLLECTING_ISUPPORTS
-
-  NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(PropertyNodeList,
-                                                         nsINodeList)
-  NS_DECL_NSIDOMNODELIST
-
-  NS_DECL_NSIMUTATIONOBSERVER_ATTRIBUTECHANGED
-  NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
-  NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
-  NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
-
-  // nsINodeList interface
-  virtual int32_t IndexOf(nsIContent* aContent) override;
-  virtual nsINode* GetParentObject() override;
-
-  void AppendElement(nsGenericHTMLElement* aElement)
-  {
-    mElements.AppendElement(aElement);
-  }
-
-  void Clear()
-  {
-    mElements.Clear();
-  }
-
-  void SetDirty() { mIsDirty = true; }
-
-protected:
-  virtual ~PropertyNodeList();
-
-  // Make sure this list is up to date, in case the DOM has been mutated.
-  void EnsureFresh();
-
-  // the the name that this list corresponds to
-  nsString mName;
-
-  // the document mParent is in, if any
-  nsCOMPtr<nsIDocument> mDoc;
-
-  // the collection that this list is a named item of
-  RefPtr<HTMLPropertiesCollection> mCollection;
-
-  // the node this list is rooted at
-  nsCOMPtr<nsINode> mParent;
-
-  // the properties that make up this list
-  nsTArray<RefPtr<nsGenericHTMLElement> > mElements;
-
-  // True if there have been DOM modifications since the last EnsureFresh call. 
-  bool mIsDirty;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // HTMLPropertiesCollection_h_
--- a/dom/html/HTMLSharedObjectElement.cpp
+++ b/dom/html/HTMLSharedObjectElement.cpp
@@ -36,36 +36,16 @@ HTMLSharedObjectElement::HTMLSharedObjec
 {
   RegisterActivityObserver();
   SetIsNetworkCreated(aFromParser == FROM_PARSER_NETWORK);
 
   // By default we're in the loading state
   AddStatesSilently(NS_EVENT_STATE_LOADING);
 }
 
-void
-HTMLSharedObjectElement::GetItemValueText(DOMString& aValue)
-{
-  if (mNodeInfo->Equals(nsGkAtoms::applet)) {
-    nsGenericHTMLElement::GetItemValueText(aValue);
-  } else {
-    GetSrc(aValue);
-  }
-}
-
-void
-HTMLSharedObjectElement::SetItemValueText(const nsAString& aValue)
-{
-  if (mNodeInfo->Equals(nsGkAtoms::applet)) {
-    nsGenericHTMLElement::SetItemValueText(aValue);
-  } else {
-    SetSrc(aValue);
-  }
-}
-
 HTMLSharedObjectElement::~HTMLSharedObjectElement()
 {
 #ifdef XP_MACOSX
   HTMLObjectElement::OnFocusBlurPlugin(this, false);
 #endif
   UnregisterActivityObserver();
   DestroyImageLoadingContent();
 }
--- a/dom/html/HTMLSharedObjectElement.h
+++ b/dom/html/HTMLSharedObjectElement.h
@@ -207,19 +207,16 @@ private:
   }
 
   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 void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
-
   virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
 
   static void MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
                                     nsRuleData* aData);
 
   /**
    * Decides whether we should load embed node content.
    *
--- a/dom/html/HTMLSourceElement.cpp
+++ b/dom/html/HTMLSourceElement.cpp
@@ -141,28 +141,16 @@ HTMLSourceElement::AfterSetAttr(int32_t 
       }
     }
   }
 
   return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
                                             aValue, aNotify);
 }
 
-void
-HTMLSourceElement::GetItemValueText(DOMString& aValue)
-{
-  GetSrc(aValue);
-}
-
-void
-HTMLSourceElement::SetItemValueText(const nsAString& aValue)
-{
-  SetSrc(aValue);
-}
-
 nsresult
 HTMLSourceElement::BindToTree(nsIDocument *aDocument,
                               nsIContent *aParent,
                               nsIContent *aBindingParent,
                               bool aCompileEventHandlers)
 {
   nsresult rv = nsGenericHTMLElement::BindToTree(aDocument,
                                                  aParent,
--- a/dom/html/HTMLSourceElement.h
+++ b/dom/html/HTMLSourceElement.h
@@ -103,24 +103,20 @@ public:
   }
 
 protected:
   virtual ~HTMLSourceElement();
 
   virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 
 protected:
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
-
   virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
                                 const nsAttrValue* aValue,
                                 bool aNotify) override;
 
-
 private:
   RefPtr<nsMediaList> mMediaList;
   RefPtr<MediaSource> mSrcMediaSource;
 
   // Generates a new nsMediaList using the given input
   void UpdateMediaList(const nsAttrValue* aValue);
 };
 
--- a/dom/html/HTMLTimeElement.cpp
+++ b/dom/html/HTMLTimeElement.cpp
@@ -27,28 +27,10 @@ HTMLTimeElement::~HTMLTimeElement()
 NS_IMPL_ELEMENT_CLONE(HTMLTimeElement)
 
 JSObject*
 HTMLTimeElement::WrapNode(JSContext* cx, JS::Handle<JSObject*> aGivenProto)
 {
   return HTMLTimeElementBinding::Wrap(cx, this, aGivenProto);
 }
 
-void
-HTMLTimeElement::GetItemValueText(DOMString& text)
-{
-  if (HasAttr(kNameSpaceID_None, nsGkAtoms::datetime)) {
-    GetDateTime(text);
-  } else {
-    ErrorResult rv;
-    GetTextContentInternal(text, rv);
-  }
-}
-
-void
-HTMLTimeElement::SetItemValueText(const nsAString& text)
-{
-  ErrorResult rv;
-  SetDateTime(text, rv);
-}
-
 } // namespace dom
 } // namespace mozilla
--- a/dom/html/HTMLTimeElement.h
+++ b/dom/html/HTMLTimeElement.h
@@ -27,18 +27,16 @@ public:
     GetHTMLAttr(nsGkAtoms::datetime, aDateTime);
   }
 
   void SetDateTime(const nsAString& aDateTime, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::datetime, aDateTime, aError);
   }
 
-  virtual void GetItemValueText(DOMString& text) override;
-  virtual void SetItemValueText(const nsAString& text) override;
   virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override;
 
 protected:
   virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
 };
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/html/HTMLTrackElement.h
+++ b/dom/html/HTMLTrackElement.h
@@ -88,27 +88,16 @@ public:
 
   uint16_t ReadyState() const;
   void SetReadyState(uint16_t aReadyState);
 
   TextTrack* GetTrack();
 
   virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override;
 
-  // For Track, ItemValue reflects the src attribute
-  virtual void GetItemValueText(DOMString& aText) override
-  {
-    GetSrc(aText);
-  }
-  virtual void SetItemValueText(const nsAString& aText) override
-  {
-    ErrorResult rv;
-    SetSrc(aText, rv);
-  }
-
   // Override ParseAttribute() to convert kind strings to enum values.
   virtual bool ParseAttribute(int32_t aNamespaceID,
                               nsIAtom* aAttribute,
                               const nsAString& aValue,
                               nsAttrValue& aResult) override;
 
   // Override BindToTree() so that we can trigger a load when we become
   // the child of a media element.
--- a/dom/html/moz.build
+++ b/dom/html/moz.build
@@ -23,17 +23,16 @@ XPIDL_SOURCES += [
     'nsIImageDocument.idl',
     'nsIMenuBuilder.idl',
     'nsIPhonetic.idl',
 ]
 
 XPIDL_MODULE = 'content_html'
 
 EXPORTS += [
-    'HTMLPropertiesCollection.h',
     'nsFormSubmission.h',
     'nsGenericHTMLElement.h',
     'nsHTMLDNSPrefetch.h',
     'nsIConstraintValidation.h',
     'nsIForm.h',
     'nsIFormControl.h',
     'nsIFormProcessor.h',
     'nsIHTMLCollection.h',
@@ -163,17 +162,16 @@ UNIFIED_SOURCES += [
     'HTMLOptGroupElement.cpp',
     'HTMLOptionElement.cpp',
     'HTMLOptionsCollection.cpp',
     'HTMLOutputElement.cpp',
     'HTMLParagraphElement.cpp',
     'HTMLPictureElement.cpp',
     'HTMLPreElement.cpp',
     'HTMLProgressElement.cpp',
-    'HTMLPropertiesCollection.cpp',
     'HTMLScriptElement.cpp',
     'HTMLSelectElement.cpp',
     'HTMLShadowElement.cpp',
     'HTMLSharedElement.cpp',
     'HTMLSharedListElement.cpp',
     'HTMLSharedObjectElement.cpp',
     'HTMLSourceElement.cpp',
     'HTMLSpanElement.cpp',
--- a/dom/html/nsGenericHTMLElement.cpp
+++ b/dom/html/nsGenericHTMLElement.cpp
@@ -89,17 +89,16 @@
 #include "HTMLMenuElement.h"
 #include "nsDOMMutationObserver.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/dom/FromParser.h"
 #include "mozilla/dom/Link.h"
 #include "mozilla/dom/UndoManager.h"
 #include "mozilla/BloomFilter.h"
 
-#include "HTMLPropertiesCollection.h"
 #include "nsVariant.h"
 #include "nsDOMTokenList.h"
 #include "nsThreadUtils.h"
 #include "nsTextFragment.h"
 #include "mozilla/dom/BindingUtils.h"
 #include "mozilla/dom/TouchEvent.h"
 #include "mozilla/ErrorResult.h"
 #include "nsHTMLDocument.h"
@@ -542,23 +541,16 @@ nsGenericHTMLElement::BindToTree(nsIDocu
                                  bool aCompileEventHandlers)
 {
   nsresult rv = nsGenericHTMLElementBase::BindToTree(aDocument, aParent,
                                                      aBindingParent,
                                                      aCompileEventHandlers);
   NS_ENSURE_SUCCESS(rv, rv);
 
   if (aDocument) {
-    if (HasProperties()) {
-      HTMLPropertiesCollection* properties = 
-        static_cast<HTMLPropertiesCollection*>(GetProperty(nsGkAtoms::microdataProperties));
-      if (properties) {
-        properties->SetDocument(aDocument);
-      }
-    }
     RegAccessKey();
     if (HasName()) {
       aDocument->
         AddToNameTable(this, GetParsedAttr(nsGkAtoms::name)->GetAtomValue());
     }
 
     if (HasFlag(NODE_IS_EDITABLE) && GetContentEditableValue() == eTrue) {
       nsCOMPtr<nsIHTMLDocument> htmlDocument = do_QueryInterface(aDocument);
@@ -573,24 +565,16 @@ nsGenericHTMLElement::BindToTree(nsIDocu
 
 void
 nsGenericHTMLElement::UnbindFromTree(bool aDeep, bool aNullParent)
 {
   if (IsInUncomposedDoc()) {
     UnregAccessKey();
   }
   
-  if(HasProperties()) {
-    HTMLPropertiesCollection* properties = 
-      static_cast<HTMLPropertiesCollection*>(GetProperty(nsGkAtoms::microdataProperties));
-    if (properties) {
-      properties->SetDocument(nullptr);
-    }
-  }
-
   RemoveFromNameTable();
 
   if (GetContentEditableValue() == eTrue) {
     //XXXsmaug Fix this for Shadow DOM, bug 1066965.
     nsCOMPtr<nsIHTMLDocument> htmlDocument = do_QueryInterface(GetUncomposedDoc());
     if (htmlDocument) {
       htmlDocument->ChangeContentEditableCount(this, -1);
     }
@@ -1023,20 +1007,17 @@ nsGenericHTMLElement::ParseAttribute(int
       return true;
     }
 
     if (aAttribute == nsGkAtoms::contenteditable) {
       aResult.ParseAtom(aValue);
       return true;
     }
 
-    if (aAttribute == nsGkAtoms::itemref ||
-        aAttribute == nsGkAtoms::itemprop ||
-        aAttribute == nsGkAtoms::itemtype ||
-        aAttribute == nsGkAtoms::rel) {
+    if (aAttribute == nsGkAtoms::rel) {
       aResult.ParseAtomArray(aValue);
       return true;
     }
   }
 
   return nsGenericHTMLElementBase::ParseAttribute(aNamespaceID, aAttribute,
                                                   aValue, aResult);
 }
@@ -3114,144 +3095,16 @@ nsGenericHTMLFormElementWithState::Resto
 }
 
 void
 nsGenericHTMLFormElementWithState::NodeInfoChanged(mozilla::dom::NodeInfo* aOldNodeInfo)
 {
   mStateKey.SetIsVoid(true);
 }
 
-void
-nsGenericHTMLElement::GetItemValue(JSContext* aCx, JSObject* aScope,
-                                   JS::MutableHandle<JS::Value> aRetval,
-                                   ErrorResult& aError)
-{
-  JS::Rooted<JSObject*> scope(aCx, aScope);
-  if (!HasAttr(kNameSpaceID_None, nsGkAtoms::itemprop)) {
-    aRetval.setNull();
-    return;
-  }
-
-  if (ItemScope()) {
-    JS::Rooted<JS::Value> v(aCx);
-    JSAutoCompartment ac(aCx, scope);
-    if (!mozilla::dom::WrapObject(aCx, this, aRetval)) {
-      aError.Throw(NS_ERROR_FAILURE);
-    }
-    return;
-  }
-
-  DOMString string;
-  GetItemValueText(string);
-  if (!xpc::NonVoidStringToJsval(aCx, string, aRetval)) {
-    aError.Throw(NS_ERROR_FAILURE);
-  }
-}
-
-NS_IMETHODIMP
-nsGenericHTMLElement::GetItemValue(nsIVariant** aValue)
-{
-  nsCOMPtr<nsIWritableVariant> out = new nsVariant();
-
-  if (!HasAttr(kNameSpaceID_None, nsGkAtoms::itemprop)) {
-    out->SetAsEmpty();
-    out.forget(aValue);
-    return NS_OK;
-  }
-
-  if (ItemScope()) {
-    out->SetAsISupports(static_cast<nsIContent*>(this));
-  } else {
-    DOMString string;
-    GetItemValueText(string);
-    nsString xpcomString;
-    string.ToString(xpcomString);
-    out->SetAsAString(xpcomString);
-  }
-
-  out.forget(aValue);
-  return NS_OK;
-}
-
-void
-nsGenericHTMLElement::SetItemValue(JSContext* aCx, JS::Value aValue,
-                                   ErrorResult& aError)
-{
-  if (!HasAttr(kNameSpaceID_None, nsGkAtoms::itemprop) ||
-      HasAttr(kNameSpaceID_None, nsGkAtoms::itemscope)) {
-    aError.Throw(NS_ERROR_DOM_INVALID_ACCESS_ERR);
-    return;
-  }
-
-  nsAutoString string;
-  JS::Rooted<JS::Value> value(aCx, aValue);
-  if (!ConvertJSValueToString(aCx, value, eStringify, eStringify, string)) {
-    aError.Throw(NS_ERROR_UNEXPECTED);
-    return;
-  }
-  SetItemValueText(string);
-}
-
-NS_IMETHODIMP
-nsGenericHTMLElement::SetItemValue(nsIVariant* aValue)
-{
-  if (!HasAttr(kNameSpaceID_None, nsGkAtoms::itemprop) ||
-      HasAttr(kNameSpaceID_None, nsGkAtoms::itemscope)) {
-    return NS_ERROR_DOM_INVALID_ACCESS_ERR;
-  }
-
-  nsAutoString string;
-  aValue->GetAsAString(string);
-  SetItemValueText(string);
-  return NS_OK;
-}
-
-void
-nsGenericHTMLElement::GetItemValueText(DOMString& text)
-{
-  ErrorResult rv;
-  GetTextContentInternal(text, rv);
-}
-
-void
-nsGenericHTMLElement::SetItemValueText(const nsAString& text)
-{
-  mozilla::ErrorResult rv;
-  SetTextContentInternal(text, rv);
-}
-
-static void
-HTMLPropertiesCollectionDestructor(void *aObject, nsIAtom *aProperty,
-                                   void *aPropertyValue, void *aData)
-{
-  HTMLPropertiesCollection* properties =
-    static_cast<HTMLPropertiesCollection*>(aPropertyValue);
-  NS_IF_RELEASE(properties);
-}
-
-HTMLPropertiesCollection*
-nsGenericHTMLElement::Properties()
-{
-  HTMLPropertiesCollection* properties =
-    static_cast<HTMLPropertiesCollection*>(GetProperty(nsGkAtoms::microdataProperties));
-  if (!properties) {
-     properties = new HTMLPropertiesCollection(this);
-     NS_ADDREF(properties);
-     SetProperty(nsGkAtoms::microdataProperties, properties, HTMLPropertiesCollectionDestructor);
-  }
-  return properties;
-}
-
-NS_IMETHODIMP
-nsGenericHTMLElement::GetProperties(nsISupports** aProperties)
-{
-  NS_ADDREF(*aProperties = static_cast<nsIHTMLCollection*>(Properties()));
-  return NS_OK;
-}
-
 nsSize
 nsGenericHTMLElement::GetWidthHeightForImage(RefPtr<imgRequestProxy>& aImageRequest)
 {
   nsSize size(0,0);
 
   nsIFrame* frame = GetPrimaryFrame(Flush_Layout);
 
   if (frame) {
--- a/dom/html/nsGenericHTMLElement.h
+++ b/dom/html/nsGenericHTMLElement.h
@@ -33,17 +33,16 @@ struct nsSize;
 namespace mozilla {
 class EventChainPostVisitor;
 class EventChainPreVisitor;
 class EventChainVisitor;
 class EventListenerManager;
 class EventStates;
 namespace dom {
 class HTMLFormElement;
-class HTMLPropertiesCollection;
 class HTMLMenuElement;
 } // namespace dom
 } // namespace mozilla
 
 typedef nsMappedAttributeElement nsGenericHTMLElementBase;
 
 /**
  * A common superclass for HTML elements
@@ -91,55 +90,16 @@ public:
   {
     GetHTMLEnumAttr(nsGkAtoms::dir, aDir);
   }
   void SetDir(const nsAString& aDir, mozilla::ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::dir, aDir, aError);
   }
   already_AddRefed<nsDOMStringMap> Dataset();
-  bool ItemScope() const
-  {
-    return GetBoolAttr(nsGkAtoms::itemscope);
-  }
-  void SetItemScope(bool aItemScope, mozilla::ErrorResult& aError)
-  {
-    SetHTMLBoolAttr(nsGkAtoms::itemscope, aItemScope, aError);
-  }
-  nsDOMTokenList* ItemType()
-  {
-    return GetTokenList(nsGkAtoms::itemtype);
-  }
-  void GetItemId(nsString& aItemId)
-  {
-    GetHTMLURIAttr(nsGkAtoms::itemid, aItemId);
-  }
-  void SetItemId(const nsAString& aItemID, mozilla::ErrorResult& aError)
-  {
-    SetHTMLAttr(nsGkAtoms::itemid, aItemID, aError);
-  }
-  nsDOMTokenList* ItemRef()
-  {
-    return GetTokenList(nsGkAtoms::itemref);
-  }
-  nsDOMTokenList* ItemProp()
-  {
-    return GetTokenList(nsGkAtoms::itemprop);
-  }
-  mozilla::dom::HTMLPropertiesCollection* Properties();
-  void GetItemValue(JSContext* aCx, JSObject* aScope,
-                    JS::MutableHandle<JS::Value> aRetval,
-                    mozilla::ErrorResult& aError);
-  void GetItemValue(JSContext* aCx, JS::MutableHandle<JS::Value> aRetval,
-                    mozilla::ErrorResult& aError)
-  {
-    GetItemValue(aCx, GetWrapperPreserveColor(), aRetval, aError);
-  }
-  void SetItemValue(JSContext* aCx, JS::Value aValue,
-                    mozilla::ErrorResult& aError);
   bool Hidden() const
   {
     return GetBoolAttr(nsGkAtoms::hidden);
   }
   void SetHidden(bool aHidden, mozilla::ErrorResult& aError)
   {
     SetHTMLBoolAttr(nsGkAtoms::hidden, aHidden, aError);
   }
@@ -319,20 +279,16 @@ public:
   inline bool IsAnyOfHTMLElements(First aFirst, Args... aArgs) const
   {
     return IsNodeInternal(aFirst, aArgs...);
   }
 
 protected:
   virtual ~nsGenericHTMLElement() {}
 
-  // These methods are used to implement element-specific behavior of Get/SetItemValue
-  // when an element has @itemprop but no @itemscope.
-  virtual void GetItemValueText(mozilla::dom::DOMString& text);
-  virtual void SetItemValueText(const nsAString& text);
 public:
   virtual already_AddRefed<mozilla::dom::UndoManager> GetUndoManager() override;
   virtual bool UndoScope() override;
   virtual void SetUndoScope(bool aUndoScope, mozilla::ErrorResult& aError) override;
   // Callback for destructor of of dataset to ensure to null out weak pointer.
   nsresult ClearDataset();
 
   /**
@@ -388,60 +344,16 @@ public:
     SetHidden(aHidden, rv);
     return rv.StealNSResult();
   }
   NS_IMETHOD DOMBlur() final override {
     mozilla::ErrorResult rv;
     Blur(rv);
     return rv.StealNSResult();
   }
-  NS_IMETHOD GetItemScope(bool* aItemScope) final override {
-    *aItemScope = ItemScope();
-    return NS_OK;
-  }
-  NS_IMETHOD SetItemScope(bool aItemScope) final override {
-    mozilla::ErrorResult rv;
-    SetItemScope(aItemScope, rv);
-    return rv.StealNSResult();
-  }
-  NS_IMETHOD GetItemType(nsIVariant** aType) final override {
-    GetTokenList(nsGkAtoms::itemtype, aType);
-    return NS_OK;
-  }
-  NS_IMETHOD SetItemType(nsIVariant* aType) final override {
-    return SetTokenList(nsGkAtoms::itemtype, aType);
-  }
-  NS_IMETHOD GetItemId(nsAString& aId) final override {
-    nsString id;
-    GetItemId(id);
-    aId.Assign(id);
-    return NS_OK;
-  }
-  NS_IMETHOD SetItemId(const nsAString& aId) final override {
-    mozilla::ErrorResult rv;
-    SetItemId(aId, rv);
-    return rv.StealNSResult();
-  }
-  NS_IMETHOD GetProperties(nsISupports** aReturn) final override;
-  NS_IMETHOD GetItemValue(nsIVariant** aValue) final override;
-  NS_IMETHOD SetItemValue(nsIVariant* aValue) final override;
-  NS_IMETHOD GetItemRef(nsIVariant** aRef) final override {
-    GetTokenList(nsGkAtoms::itemref, aRef);
-    return NS_OK;
-  }
-  NS_IMETHOD SetItemRef(nsIVariant* aRef) final override {
-    return SetTokenList(nsGkAtoms::itemref, aRef);
-  }
-  NS_IMETHOD GetItemProp(nsIVariant** aProp) final override {
-    GetTokenList(nsGkAtoms::itemprop, aProp);
-    return NS_OK;
-  }
-  NS_IMETHOD SetItemProp(nsIVariant* aProp) final override {
-    return SetTokenList(nsGkAtoms::itemprop, aProp);
-  }
   NS_IMETHOD GetAccessKey(nsAString& aAccessKey) final override {
     nsString accessKey;
     GetAccessKey(accessKey);
     aAccessKey.Assign(accessKey);
     return NS_OK;
   }
   NS_IMETHOD SetAccessKey(const nsAString& aAccessKey) final override {
     mozilla::ErrorResult rv;
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -1970,96 +1970,16 @@ nsHTMLDocument::UseExistingNameString(ns
 NS_IMETHODIMP
 nsHTMLDocument::GetElementsByName(const nsAString& aElementName,
                                   nsIDOMNodeList** aReturn)
 {
   *aReturn = GetElementsByName(aElementName).take();
   return NS_OK;
 }
 
-static bool MatchItems(nsIContent* aContent, int32_t aNameSpaceID, 
-                       nsIAtom* aAtom, void* aData)
-{
-  if (!aContent->IsHTMLElement()) {
-    return false;
-  }
-
-  nsGenericHTMLElement* elem = static_cast<nsGenericHTMLElement*>(aContent);
-  if (!elem->HasAttr(kNameSpaceID_None, nsGkAtoms::itemscope) ||
-      elem->HasAttr(kNameSpaceID_None, nsGkAtoms::itemprop)) {
-    return false;
-  }
-
-  nsTArray<nsCOMPtr<nsIAtom> >* tokens = static_cast<nsTArray<nsCOMPtr<nsIAtom> >*>(aData);
-  if (tokens->IsEmpty()) {
-    return true;
-  }
- 
-  const nsAttrValue* attr = elem->GetParsedAttr(nsGkAtoms::itemtype);
-  if (!attr)
-    return false;
-
-  for (uint32_t i = 0; i < tokens->Length(); i++) {
-    if (!attr->Contains(tokens->ElementAt(i), eCaseMatters)) {
-      return false;
-    }
-  }
-  return true;
-}
-
-static void DestroyTokens(void* aData)
-{
-  nsTArray<nsCOMPtr<nsIAtom> >* tokens = static_cast<nsTArray<nsCOMPtr<nsIAtom> >*>(aData);
-  delete tokens;
-}
-
-static void* CreateTokens(nsINode* aRootNode, const nsString* types)
-{
-  nsTArray<nsCOMPtr<nsIAtom> >* tokens = new nsTArray<nsCOMPtr<nsIAtom> >();
-  nsAString::const_iterator iter, end;
-  types->BeginReading(iter);
-  types->EndReading(end);
-  
-  // skip initial whitespace
-  while (iter != end && nsContentUtils::IsHTMLWhitespace(*iter)) {
-    ++iter;
-  }
-
-  // parse the tokens
-  while (iter != end) {
-    nsAString::const_iterator start(iter);
-
-    do {
-      ++iter;
-    } while (iter != end && !nsContentUtils::IsHTMLWhitespace(*iter));
-
-    tokens->AppendElement(NS_Atomize(Substring(start, iter)));
-
-    // skip whitespace
-    while (iter != end && nsContentUtils::IsHTMLWhitespace(*iter)) {
-      ++iter;
-    }
-  }
-  return tokens;
-}
-
-NS_IMETHODIMP
-nsHTMLDocument::GetItems(const nsAString& types, nsIDOMNodeList** aReturn)
-{
-  *aReturn = GetItems(types).take();
-  return NS_OK;
-}
-
-already_AddRefed<nsINodeList>
-nsHTMLDocument::GetItems(const nsAString& aTypeNames)
-{
-  return NS_GetFuncStringNodeList(this, MatchItems, DestroyTokens, CreateTokens,
-                                  aTypeNames);
-}
-
 void
 nsHTMLDocument::AddedForm()
 {
   ++mNumForms;
 }
 
 void
 nsHTMLDocument::RemovedForm()
--- a/dom/html/nsHTMLDocument.h
+++ b/dom/html/nsHTMLDocument.h
@@ -189,17 +189,16 @@ public:
     return nsHTMLDocument::GetForms();
   }
   nsIHTMLCollection* Scripts();
   already_AddRefed<nsContentList> GetElementsByName(const nsAString & aName)
   {
     return NS_GetFuncStringNodeList(this, MatchNameAttribute, nullptr,
                                     UseExistingNameString, aName);
   }
-  already_AddRefed<nsINodeList> GetItems(const nsAString& aTypeNames);
   already_AddRefed<nsIDocument> Open(JSContext* cx,
                                      const nsAString& aType,
                                      const nsAString& aReplace,
                                      mozilla::ErrorResult& rv);
   already_AddRefed<nsPIDOMWindowOuter>
   Open(JSContext* cx,
        const nsAString& aURL,
        const nsAString& aName,
--- a/dom/html/test/test_bug629801.html
+++ b/dom/html/test/test_bug629801.html
@@ -33,26 +33,16 @@ var t1 = document.getElementById("t1"),
     t3 = document.getElementById("t3"),
     t4 = document.createElement("time");
 
 // .dateTime IDL
 is(t1.dateTime, "", "dateTime is properly set to empty string if datetime attributeis absent");
 is(t2.dateTime, "2009-05-10", "dateTime is properly set to datetime attribute with datetime and no text content");
 is(t3.dateTime, "2009-05-10", "dateTime is properly set to datetime attribute with datetime and text content");
 
-// .itemValue getter for <time>'s microdata
-var times = document.getItems()[0];
-is(times.properties["a"][0].itemValue, "May 10th 2009", "itemValue getter with no datetime uses text content");
-is(times.properties["b"][0].itemValue, "2009-05-10", "itemValue getter with no text content uses datetime");
-is(times.properties["c"][0].itemValue, "2009-05-10", "itemValue getter with datetime and text content uses datetime");
-
-// .itemValue setter uses datetime vs. text content
-times.properties["a"][0].itemValue = "2009-05-10";
-is(times.properties["a"][0].dateTime, "2009-05-10", "setting itemValue updates datetime");
-
 // dateTime reflects datetime attribute
 reflectString({
   element: t4,
   attribute: "dateTime"
 });
 
 </script>
 </pre>
--- a/dom/html/test/test_bug763626.html
+++ b/dom/html/test/test_bug763626.html
@@ -10,17 +10,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 
 <script type="application/javascript">
 
 SimpleTest.waitForExplicitFinish();
 
 function boom()
 {
-  var r = document.createElement("div").itemRef;
+  var r = document.createElement("iframe").sandbox;
   SpecialPowers.DOMWindowUtils.garbageCollect();
   is("" + r, "", "ToString should return empty string when element is gone");
   SimpleTest.finish();
 }
 
 </script>
 </head>
 
--- a/dom/html/test/test_bug839371.html
+++ b/dom/html/test/test_bug839371.html
@@ -27,25 +27,16 @@ https://bugzilla.mozilla.org/show_bug.cg
 var d1 = document.getElementById("d1"),
     d2 = document.createElement("data");
 
 // .value IDL
 is(d1.value, "9678AOU879", "value property reflects content attribute");
 d1.value = "123";
 is(d1.value, "123", "value property can be set via setter");
 
-// .itemValue getter for <data>'s microdata
-var data = document.getItems()[0];
-is(data.properties["product-id"][0].itemValue, "123", "itemValue getter reflects value attribute");
-
-// .itemValue setter uses value
-data.properties["product-id"][0].itemValue = "456";
-is(data.properties["product-id"][0].value, "456", "setting itemValue updates value");
-is(data.properties["product-id"][0].itemValue, "456", "setting itemValue updates itemValue");
-
 // .value reflects value attribute
 reflectString({
   element: d2,
   attribute: "value"
 });
 
 </script>
 </pre>
--- a/dom/interfaces/html/nsIDOMHTMLDocument.idl
+++ b/dom/interfaces/html/nsIDOMHTMLDocument.idl
@@ -25,17 +25,16 @@ interface nsIDOMHTMLDocument : nsIDOMDoc
   readonly attribute nsIDOMHTMLCollection images;
   readonly attribute nsIDOMHTMLCollection embeds;
   // mapped to attribute embeds for NS4 compat
   readonly attribute nsIDOMHTMLCollection plugins;
   readonly attribute nsIDOMHTMLCollection links;
   readonly attribute nsIDOMHTMLCollection forms;
   readonly attribute nsIDOMHTMLCollection scripts;
   nsIDOMNodeList            getElementsByName(in DOMString elementName);
-  nsIDOMNodeList  getItems([optional] in DOMString types);
 
   // If aContentType is not something supported by nsHTMLDocument and
   // the HTML content sink, trying to write to the document will
   // probably throw.
   // Pass aReplace = true to trigger a replacement of the previous
   // document in session history; pass false for normal history handling.
   [implicit_jscontext, optional_argc]
   nsISupports               open([optional] in DOMString aContentTypeOrUrl,
--- a/dom/interfaces/html/nsIDOMHTMLElement.idl
+++ b/dom/interfaces/html/nsIDOMHTMLElement.idl
@@ -23,26 +23,16 @@ interface nsIDOMHTMLMenuElement;
 interface nsIDOMHTMLElement : nsIDOMElement
 {
   // metadata attributes
            attribute DOMString        title;
            attribute DOMString        lang;
            attribute DOMString        dir;
   readonly attribute nsISupports      dataset;
 
-           attribute boolean                        itemScope;
-           attribute nsIVariant                     itemType;
-           attribute DOMString                      itemId;
-  readonly attribute nsISupports                    properties;
-  // The following attributes are really nsDOMTokenList, which has
-  // PutForwards, so we express them as nsIVariants to deal with this.
-           attribute nsIVariant                     itemValue;
-           attribute nsIVariant                     itemProp;
-           attribute nsIVariant                     itemRef;
-
   // user interaction
   /**
    * Indicates that the element is not yet, or is no longer, relevant.
    *
    * See <http://www.whatwg.org/html5/#the-hidden-attribute>.
    */
            attribute boolean          hidden;
   [binaryname(DOMClick)]
--- a/dom/tests/mochitest/general/test_interfaces.html
+++ b/dom/tests/mochitest/general/test_interfaces.html
@@ -621,18 +621,16 @@ var interfaceNamesInGlobalScope =
     "HTMLParamElement",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "HTMLPreElement",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "HTMLPictureElement",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "HTMLProgressElement",
 // IMPORTANT: Do not change this list without review from a DOM peer!
-    "HTMLPropertiesCollection",
-// IMPORTANT: Do not change this list without review from a DOM peer!
     "HTMLQuoteElement",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "HTMLScriptElement",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "HTMLSelectElement",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "HTMLShadowElement",
 // IMPORTANT: Do not change this list without review from a DOM peer!
@@ -951,18 +949,16 @@ var interfaceNamesInGlobalScope =
     {name: "PresentationSessionConnectEvent", disabled: true, permission: ["presentation"]},
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "ProcessingInstruction",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "ProgressEvent",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "Promise",
 // IMPORTANT: Do not change this list without review from a DOM peer!
-    "PropertyNodeList",
-// IMPORTANT: Do not change this list without review from a DOM peer!
     {name: "PushManager", b2g: false, nightlyAndroid: true, android: false},
 // IMPORTANT: Do not change this list without review from a DOM peer!
     {name: "PushSubscription", b2g: false, nightlyAndroid: true, android: false},
 // IMPORTANT: Do not change this list without review from a DOM peer!
     {name: "PushSubscriptionOptions", b2g: false, nightlyAndroid: true, android: false},
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "RadioNodeList",
 // IMPORTANT: Do not change this list without review from a DOM peer!
--- a/dom/webidl/Document.webidl
+++ b/dom/webidl/Document.webidl
@@ -111,17 +111,16 @@ partial interface Document {
   //(HTML only)readonly attribute HTMLHeadElement? head;
   //(HTML only)readonly attribute HTMLCollection images;
   //(HTML only)readonly attribute HTMLCollection embeds;
   //(HTML only)readonly attribute HTMLCollection plugins;
   //(HTML only)readonly attribute HTMLCollection links;
   //(HTML only)readonly attribute HTMLCollection forms;
   //(HTML only)readonly attribute HTMLCollection scripts;
   //(HTML only)NodeList getElementsByName(DOMString elementName);
-  //(HTML only)NodeList getItems(optional DOMString typeNames); // microdata
   //(Not implemented)readonly attribute DOMElementMap cssElementMap;
 
   // dynamic markup insertion
   //(HTML only)Document open(optional DOMString type, optional DOMString replace);
   //(HTML only)WindowProxy open(DOMString url, DOMString name, DOMString features, optional boolean replace);
   //(HTML only)void close();
   //(HTML only)void write(DOMString... text);
   //(HTML only)void writeln(DOMString... text);
--- a/dom/webidl/HTMLDocument.webidl
+++ b/dom/webidl/HTMLDocument.webidl
@@ -25,17 +25,16 @@ interface HTMLDocument : Document {
   readonly attribute HTMLCollection plugins;
   [Pure]
   readonly attribute HTMLCollection links;
   [Pure]
   readonly attribute HTMLCollection forms;
   [Pure]
   readonly attribute HTMLCollection scripts;
   NodeList getElementsByName(DOMString elementName);
-  NodeList getItems(optional DOMString typeNames = ""); // microdata
 
   // dynamic markup insertion
   [Throws]
   Document open(optional DOMString type = "text/html", optional DOMString replace = "");
   [Throws]
   WindowProxy? open(DOMString url, DOMString name, DOMString features, optional boolean replace = false);
   [Throws]
   void close();
--- a/dom/webidl/HTMLElement.webidl
+++ b/dom/webidl/HTMLElement.webidl
@@ -20,29 +20,16 @@ interface HTMLElement : Element {
   [SetterThrows, Pure]
            attribute DOMString dir;
   [Constant]
   readonly attribute DOMStringMap dataset;
 
   [GetterThrows, Pure]
            attribute DOMString innerText;
 
-  // microdata 
-  [SetterThrows, Pure]
-           attribute boolean itemScope;
-  [PutForwards=value,Constant] readonly attribute DOMTokenList itemType;
-  [SetterThrows, Pure]
-           attribute DOMString itemId;
-  [PutForwards=value,Constant] readonly attribute DOMTokenList itemRef;
-  [PutForwards=value,Constant] readonly attribute DOMTokenList itemProp;
-  [Constant]
-  readonly attribute HTMLPropertiesCollection properties;
-  [Throws]
-           attribute any itemValue;
-
   // user interaction
   [SetterThrows, Pure]
            attribute boolean hidden;
   void click();
   [SetterThrows, Pure]
            attribute long tabIndex;
   [Throws]
   void focus();
deleted file mode 100644
--- a/dom/webidl/HTMLPropertiesCollection.webidl
+++ /dev/null
@@ -1,24 +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/
- *
- * Copyright © 2012 W3C® (MIT, ERCIM, Keio), All Rights Reserved. W3C
- * liability, trademark and document use rules apply.
- */
-
-interface HTMLPropertiesCollection : HTMLCollection {
-  // inherits length and item()
-  getter PropertyNodeList? namedItem(DOMString name); // overrides inherited namedItem()
-  readonly attribute DOMStringList names;
-};
-
-typedef sequence<any> PropertyValueArray;
-
-interface PropertyNodeList : NodeList {
-  [Throws]
-  PropertyValueArray getValues();
-};
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -225,17 +225,16 @@ WEBIDL_FILES = [
     'HTMLOptionElement.webidl',
     'HTMLOptionsCollection.webidl',
     'HTMLOutputElement.webidl',
     'HTMLParagraphElement.webidl',
     'HTMLParamElement.webidl',
     'HTMLPictureElement.webidl',
     'HTMLPreElement.webidl',
     'HTMLProgressElement.webidl',
-    'HTMLPropertiesCollection.webidl',
     'HTMLQuoteElement.webidl',
     'HTMLScriptElement.webidl',
     'HTMLSelectElement.webidl',
     'HTMLShadowElement.webidl',
     'HTMLSourceElement.webidl',
     'HTMLSpanElement.webidl',
     'HTMLStyleElement.webidl',
     'HTMLTableCaptionElement.webidl',
--- a/testing/web-platform/meta/html/dom/interfaces.html.ini
+++ b/testing/web-platform/meta/html/dom/interfaces.html.ini
@@ -557,62 +557,62 @@
     expected: FAIL
 
   [HTMLElement interface: attribute onsort]
     expected: FAIL
 
   [HTMLElement interface: document.createElement("noscript") must inherit property "translate" with the proper type (2)]
     expected: FAIL
 
-  [HTMLElement interface: document.createElement("noscript") must inherit property "dropzone" with the proper type (20)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "forceSpellCheck" with the proper type (25)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "commandType" with the proper type (26)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "commandLabel" with the proper type (27)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "commandIcon" with the proper type (28)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "commandHidden" with the proper type (29)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "commandDisabled" with the proper type (30)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "commandChecked" with the proper type (31)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "onautocomplete" with the proper type (33)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "onautocompleteerror" with the proper type (34)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "oncancel" with the proper type (36)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "onclose" with the proper type (41)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "oncuechange" with the proper type (43)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "ondragexit" with the proper type (48)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "onmousewheel" with the proper type (74)]
-    expected: FAIL
-
-  [HTMLElement interface: document.createElement("noscript") must inherit property "onsort" with the proper type (87)]
+  [HTMLElement interface: document.createElement("noscript") must inherit property "dropzone" with the proper type (13)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "forceSpellCheck" with the proper type (18)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "commandType" with the proper type (19)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "commandLabel" with the proper type (20)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "commandIcon" with the proper type (21)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "commandHidden" with the proper type (22)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "commandDisabled" with the proper type (23)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "commandChecked" with the proper type (24)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "onautocomplete" with the proper type (26)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "onautocompleteerror" with the proper type (27)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "oncancel" with the proper type (29)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "onclose" with the proper type (34)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "oncuechange" with the proper type (36)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "ondragexit" with the proper type (41)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "onmousewheel" with the proper type (67)]
+    expected: FAIL
+
+  [HTMLElement interface: document.createElement("noscript") must inherit property "onsort" with the proper type (80)]
     expected: FAIL
 
   [Element interface: document.createElement("noscript") must inherit property "query" with the proper type (33)]
     expected: FAIL
 
   [Element interface: calling query(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]
     expected: FAIL
 
@@ -2633,161 +2633,155 @@
     expected: FAIL
 
   [Document interface: new Document() must inherit property "getElementsByName" with the proper type (51)]
     expected: FAIL
 
   [Document interface: calling getElementsByName(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "getItems" with the proper type (52)]
-    expected: FAIL
-
-  [Document interface: calling getItems(DOMString) on new Document() with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "cssElementMap" with the proper type (53)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "open" with the proper type (55)]
+  [Document interface: new Document() must inherit property "cssElementMap" with the proper type (52)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "open" with the proper type (54)]
     expected: FAIL
 
   [Document interface: calling open(DOMString,DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "open" with the proper type (56)]
+  [Document interface: new Document() must inherit property "open" with the proper type (55)]
     expected: FAIL
 
   [Document interface: calling open(DOMString,DOMString,DOMString,boolean) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "close" with the proper type (57)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "write" with the proper type (58)]
+  [Document interface: new Document() must inherit property "close" with the proper type (56)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "write" with the proper type (57)]
     expected: FAIL
 
   [Document interface: calling write(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "writeln" with the proper type (59)]
+  [Document interface: new Document() must inherit property "writeln" with the proper type (58)]
     expected: FAIL
 
   [Document interface: calling writeln(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "designMode" with the proper type (63)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "execCommand" with the proper type (64)]
+  [Document interface: new Document() must inherit property "designMode" with the proper type (62)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "execCommand" with the proper type (63)]
     expected: FAIL
 
   [Document interface: calling execCommand(DOMString,boolean,DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "queryCommandEnabled" with the proper type (65)]
+  [Document interface: new Document() must inherit property "queryCommandEnabled" with the proper type (64)]
     expected: FAIL
 
   [Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "queryCommandIndeterm" with the proper type (66)]
+  [Document interface: new Document() must inherit property "queryCommandIndeterm" with the proper type (65)]
     expected: FAIL
 
   [Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "queryCommandState" with the proper type (67)]
+  [Document interface: new Document() must inherit property "queryCommandState" with the proper type (66)]
     expected: FAIL
 
   [Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "queryCommandSupported" with the proper type (68)]
+  [Document interface: new Document() must inherit property "queryCommandSupported" with the proper type (67)]
     expected: FAIL
 
   [Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "queryCommandValue" with the proper type (69)]
+  [Document interface: new Document() must inherit property "queryCommandValue" with the proper type (68)]
     expected: FAIL
 
   [Document interface: calling queryCommandValue(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "commands" with the proper type (70)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "fgColor" with the proper type (72)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "linkColor" with the proper type (73)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "vlinkColor" with the proper type (74)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "alinkColor" with the proper type (75)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "bgColor" with the proper type (76)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "anchors" with the proper type (77)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "applets" with the proper type (78)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "clear" with the proper type (79)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "captureEvents" with the proper type (80)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "releaseEvents" with the proper type (81)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "all" with the proper type (82)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "query" with the proper type (90)]
+  [Document interface: new Document() must inherit property "commands" with the proper type (69)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "fgColor" with the proper type (71)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "linkColor" with the proper type (72)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "vlinkColor" with the proper type (73)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "alinkColor" with the proper type (74)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "bgColor" with the proper type (75)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "anchors" with the proper type (76)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "applets" with the proper type (77)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "clear" with the proper type (78)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "captureEvents" with the proper type (79)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "releaseEvents" with the proper type (80)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "all" with the proper type (81)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "query" with the proper type (89)]
     expected: FAIL
 
   [Document interface: calling query(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "queryAll" with the proper type (91)]
+  [Document interface: new Document() must inherit property "queryAll" with the proper type (90)]
     expected: FAIL
 
   [Document interface: calling queryAll(DOMString) on new Document() with too few arguments must throw TypeError]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "onautocomplete" with the proper type (95)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "onautocompleteerror" with the proper type (96)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "oncancel" with the proper type (98)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "onclose" with the proper type (103)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "oncuechange" with the proper type (105)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "ondragexit" with the proper type (110)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "onmousewheel" with the proper type (136)]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "onsort" with the proper type (149)]
+  [Document interface: new Document() must inherit property "onautocomplete" with the proper type (94)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "onautocompleteerror" with the proper type (95)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "oncancel" with the proper type (97)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "onclose" with the proper type (102)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "oncuechange" with the proper type (104)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "ondragexit" with the proper type (109)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "onmousewheel" with the proper type (135)]
+    expected: FAIL
+
+  [Document interface: new Document() must inherit property "onsort" with the proper type (148)]
     expected: FAIL
 
   [HTMLSlotElement interface: existence and properties of interface object]
     expected: FAIL
 
   [HTMLSlotElement interface object length]
     expected: FAIL
 
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16be.html.ini
@@ -1,15 +1,13 @@
 [utf-16be.html]
   type: testharness
   expected: TIMEOUT
   disabled:
     if os == "mac": https://bugzilla.mozilla.org/show_bug.cgi?id=1034063
-  [Getting <div>.itemid]
-    expected: FAIL
 
   [hyperlink auditing <a ping>]
     expected: TIMEOUT
 
   [hyperlink auditing <area ping>]
     expected: TIMEOUT
 
   [loading image <video poster>]
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-16le.html.ini
@@ -1,15 +1,13 @@
 [utf-16le.html]
   type: testharness
   disabled:
     if os == "mac": https://bugzilla.mozilla.org/show_bug.cgi?id=1034063
   expected: TIMEOUT
-  [Getting <div>.itemid]
-    expected: FAIL
 
   [hyperlink auditing <a ping>]
     expected: TIMEOUT
 
   [hyperlink auditing <area ping>]
     expected: TIMEOUT
 
   [loading image <video poster>]
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/utf-8.html.ini
@@ -1,15 +1,13 @@
 [utf-8.html]
   type: testharness
   expected: TIMEOUT
   disabled:
     if os == "mac": https://bugzilla.mozilla.org/show_bug.cgi?id=1034063
-  [Getting <div>.itemid]
-    expected: FAIL
 
   [hyperlink auditing <a ping>]
     expected: TIMEOUT
 
   [hyperlink auditing <area ping>]
     expected: TIMEOUT
 
   [loading image <video poster>]
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1251.html.ini
@@ -70,19 +70,16 @@
     expected: FAIL
 
   [Getting <menuitem>.icon]
     expected: FAIL
 
   [Getting <script>.src]
     expected: FAIL
 
-  [Getting <div>.itemid]
-    expected: FAIL
-
   [Getting <a>.ping (multiple URLs)]
     expected: FAIL
 
   [follow hyperlink <a href>]
     expected: FAIL
 
   [follow hyperlink <area href>]
     expected: FAIL
@@ -247,49 +244,16 @@
     expected: FAIL
 
   [submit form <button formaction>]
     expected: FAIL
 
   [<base href>]
     expected: FAIL
 
-  [microdata values <audio src>]
-    expected: FAIL
-
-  [microdata values <embed src>]
-    expected: FAIL
-
-  [microdata values <iframe src>]
-    expected: FAIL
-
-  [microdata values <img src>]
-    expected: FAIL
-
-  [microdata values <source src>]
-    expected: FAIL
-
-  [microdata values <track src>]
-    expected: FAIL
-
-  [microdata values <video src>]
-    expected: FAIL
-
-  [microdata values <a href>]
-    expected: FAIL
-
-  [microdata values <area href>]
-    expected: FAIL
-
-  [microdata values <link href>]
-    expected: FAIL
-
-  [microdata values <object data>]
-    expected: FAIL
-
   [Worker constructor]
     expected: FAIL
 
   [SharedWorker constructor]
     expected: FAIL
 
   [EventSource constructor]
     expected: FAIL
--- a/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html.ini
+++ b/testing/web-platform/meta/html/infrastructure/urls/resolving-urls/query-encoding/windows-1252.html.ini
@@ -1,15 +1,13 @@
 [windows-1252.html]
   type: testharness
   expected: TIMEOUT
   disabled:
     if os == "mac": https://bugzilla.mozilla.org/show_bug.cgi?id=1034063
-  [Getting <div>.itemid]
-    expected: FAIL
 
   [hyperlink auditing <a ping>]
     expected: TIMEOUT
 
   [hyperlink auditing <area ping>]
     expected: TIMEOUT
 
   [loading webvtt <track>]
deleted file mode 100644
--- a/testing/web-platform/tests/html/dom/elements-microdata.js
+++ /dev/null
@@ -1,35 +0,0 @@
-// Up-to-date as of 2013-04-19.
-// Things defined in the W3C's microdata draft, not the main HTML5 draft.
-// Note: must be included last so that it hits all elements.
-
-for (var element in elements) {
-  elements[element].itemScope = "boolean";
-  elements[element].itemType = "settable tokenlist";
-  elements[element].itemId = "url";
-  elements[element].itemRef = "settable tokenlist";
-  elements[element].itemProp = "settable tokenlist";
-}
-extraTests.push(function() {
-  // itemValue only reflects in certain circumstances.  The syntax for our big
-  // array thing above doesn't currently support one IDL attribute that reflects
-  // different content attributes, so just do this explicitly until that's fixed.
-  var reflectItemValue = function(data, localName, attribute) {
-    var element = document.createElement(localName);
-    element.setAttribute("itemprop", "");
-    ReflectionTests.reflects(data, "itemValue", element, attribute);
-  }
-  reflectItemValue("string", "meta", "content");
-  reflectItemValue("url", "audio", "src");
-  reflectItemValue("url", "embed", "src");
-  reflectItemValue("url", "iframe", "src");
-  reflectItemValue("url", "img", "src");
-  reflectItemValue("url", "source", "src");
-  reflectItemValue("url", "track", "src");
-  reflectItemValue("url", "video", "src");
-  reflectItemValue("url", "a", "href");
-  reflectItemValue("url", "area", "href");
-  reflectItemValue("url", "link", "href");
-  reflectItemValue("url", "object", "data");
-  reflectItemValue("string", "data", "value");
-  //TODO: time is more complex
-});
--- a/testing/web-platform/tests/html/dom/interfaces.html
+++ b/testing/web-platform/tests/html/dom/interfaces.html
@@ -893,28 +893,18 @@ interface HTMLOptionsCollection : HTMLCo
            attribute unsigned long length; // shadows inherited length
   legacycaller HTMLOptionElement? (DOMString name);
   setter creator void (unsigned long index, HTMLOptionElement? option);
   void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
   void remove(long index);
            attribute long selectedIndex;
 };
 
-interface HTMLPropertiesCollection : HTMLCollection {
-  // inherits length and item()
-  getter PropertyNodeList? namedItem(DOMString name); // shadows inherited namedItem()
-  readonly attribute DOMString[] names;
-};
-
 typedef sequence<any> PropertyValueArray;
 
-interface PropertyNodeList : NodeList {
-  PropertyValueArray getValues();
-};
-
 [OverrideBuiltins, Exposed=(Window,Worker)]
 interface DOMStringMap {
   getter DOMString (DOMString name);
   setter creator void (DOMString name, DOMString value);
   deleter void (DOMString name);
 };
 
 interface DOMElementMap {
@@ -947,17 +937,16 @@ partial /*sealed*/ interface Document {
   readonly attribute HTMLHeadElement? head;
   readonly attribute HTMLCollection images;
   readonly attribute HTMLCollection embeds;
   readonly attribute HTMLCollection plugins;
   readonly attribute HTMLCollection links;
   readonly attribute HTMLCollection forms;
   readonly attribute HTMLCollection scripts;
   NodeList getElementsByName(DOMString elementName);
-  NodeList getItems(optional DOMString typeNames = ""); // microdata
   readonly attribute DOMElementMap cssElementMap;
   readonly attribute HTMLScriptElement? currentScript;
 
   // dynamic markup insertion
   Document open(optional DOMString type = "text/html", optional DOMString replace = "");
   WindowProxy open(DOMString url, DOMString name, DOMString features, optional boolean replace = false);
   void close();
   void write(DOMString... text);
@@ -990,25 +979,16 @@ partial interface XMLDocument {
 interface HTMLElement : Element {
   // metadata attributes
            attribute DOMString title;
            attribute DOMString lang;
            attribute boolean translate;
            attribute DOMString dir;
   readonly attribute DOMStringMap dataset;
 
-  // microdata
-           attribute boolean itemScope;
-  [PutForwards=value] readonly attribute DOMTokenList itemType;
-           attribute DOMString itemId;
-  [PutForwards=value] readonly attribute DOMTokenList itemRef;
-  [PutForwards=value] readonly attribute DOMTokenList itemProp;
-  readonly attribute HTMLPropertiesCollection properties;
-           attribute any itemValue; // acts as DOMString on setting
-
   // user interaction
            attribute boolean hidden;
   void click();
            attribute long tabIndex;
   void focus();
   void blur();
            attribute DOMString accessKey;
   readonly attribute DOMString accessKeyLabel;
@@ -3189,18 +3169,16 @@ setup(function() {
 }, {explicit_done:true});
 window.onload = function() {
   idlArray.add_objects({
     NodeList: ['document.getElementsByName("name")'],
     HTMLAllCollection: ['document.all'],
     HTMLFormControlsCollection: ['document.createElement("form").elements'],
     RadioNodeList: [],
     HTMLOptionsCollection: ['document.createElement("select").options'],
-    HTMLPropertiesCollection: ['document.head.properties'],
-    PropertyNodeList: [],
     DOMStringMap: ['document.head.dataset'],
     DOMElementMap: ['document.cssElementMap'],
     Transferable: [],
     Document: ['iframe.contentDocument', 'new Document()'],
     XMLDocument: ['document.implementation.createDocument(null, "", null)'],
     HTMLElement: ['document.createElement("noscript")'], // more tests in html/semantics/interfaces.js
     HTMLUnknownElement: ['document.createElement("bgsound")'], // more tests in html/semantics/interfaces.js
     HTMLHtmlElement: ['document.createElement("html")'],
--- a/testing/web-platform/tests/html/dom/reflection-embedded.html
+++ b/testing/web-platform/tests/html/dom/reflection-embedded.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-embedded.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-forms.html
+++ b/testing/web-platform/tests/html/dom/reflection-forms.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-forms.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-grouping.html
+++ b/testing/web-platform/tests/html/dom/reflection-grouping.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-grouping.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-metadata.html
+++ b/testing/web-platform/tests/html/dom/reflection-metadata.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-metadata.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-misc.html
+++ b/testing/web-platform/tests/html/dom/reflection-misc.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-misc.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-obsolete.html
+++ b/testing/web-platform/tests/html/dom/reflection-obsolete.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-obsolete.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-original.html
+++ b/testing/web-platform/tests/html/dom/reflection-original.html
@@ -32,10 +32,9 @@ frameworks.
 <script src=elements-sections.js></script>
 <script src=elements-grouping.js></script>
 <script src=elements-text.js></script>
 <script src=elements-embedded.js></script>
 <script src=elements-tabular.js></script>
 <script src=elements-forms.js></script>
 <script src=elements-misc.js></script>
 <script src=elements-obsolete.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-sections.html
+++ b/testing/web-platform/tests/html/dom/reflection-sections.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-sections.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-tabular.html
+++ b/testing/web-platform/tests/html/dom/reflection-tabular.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-tabular.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/dom/reflection-text.html
+++ b/testing/web-platform/tests/html/dom/reflection-text.html
@@ -9,10 +9,9 @@ is suitable for incorporation into autom
 
 <div id=log></div>
 
 <script src="/resources/testharness.js"></script>
 <script src=/resources/testharnessreport.js></script>
 <script src=original-harness.js></script>
 <script src=new-harness.js></script>
 <script src=elements-text.js></script>
-<script src=elements-microdata.js></script>
 <script src=reflection.js></script>
--- a/testing/web-platform/tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js
+++ b/testing/web-platform/tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js
@@ -80,17 +80,17 @@ onload = function() {
       elm.setAttribute(attr, input);
       var got = elm[idlAttr];
       assert_true(got.indexOf(expected_current) > -1, msg(expected_current, got));
     }, 'Getting <'+tag+'>.'+idlAttr + (multiple ? ' (multiple URLs)' : ''),
     {help:'https://html.spec.whatwg.org/multipage/multipage/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes'});
   }
 
   ('iframe src, a href, base href, link href, img src, embed src, object data, track src, video src, audio src, input src, form action, ' +
-  'input formaction formAction, button formaction formAction, menuitem icon, script src, div itemid').split(', ').forEach(function(str) {
+  'input formaction formAction, button formaction formAction, menuitem icon, script src').split(', ').forEach(function(str) {
     var arr = str.split(' ');
     test_reflecting(arr[0], arr[1], arr[2]);
   });
 
   'a ping'.split(', ').forEach(function(str) {
     var arr = str.split(' ');
     test_reflecting(arr[0], arr[1], arr[2], true);
   });
@@ -430,36 +430,16 @@ onload = function() {
       var got_a_href = doc.links[0].href;
       assert_true(got_a_href.indexOf(expected_current) > -1, msg(expected_current, got_a_href), 'a.href');
     });
   }, '<base href>',
   {help:['https://html.spec.whatwg.org/multipage/multipage/semantics.html#set-the-frozen-base-url',
   'https://dom.spec.whatwg.org/#dom-node-baseuri',
   'https://html.spec.whatwg.org/multipage/multipage/text-level-semantics.html#the-a-element']});
 
-  // XXX itemid is exposed in JSON drag-and-drop but seems hard to automate
-
-  // microdata values
-  function test_microdata_values(tag, attr) {
-    test(function() {
-      var elm = document.createElement(tag);
-      elm.setAttribute('itemprop', '');
-      elm.setAttribute(attr, input_url_html);
-      var got = elm.itemValue;
-      assert_not_equals(got, undefined, 'itemValue not supported');
-      assert_true(got.indexOf(expected_current) > -1, msg(expected_current, got));
-    }, 'microdata values <'+tag+' '+attr+'>',
-    {help:'https://html.spec.whatwg.org/multipage/multipage/microdata.html#concept-property-value'});
-  }
-
-  'audio src, embed src, iframe src, img src, source src, track src, video src, a href, area href, link href, object data'.split(', ').forEach(function(str) {
-    var arr = str.split(' ');
-    test_microdata_values(arr[0], arr[1]);
-  });
-
   // XXX drag and drop (<a href> or <img src>) seems hard to automate
 
   // Worker()
   async_test(function() {
     var worker = new Worker(input_url_worker);
     worker.onmessage = this.step_func_done(function(e) {
       assert_equals(e.data, expected_current);
     });
--- a/testing/web-platform/tests/tools/scripts/id2path.json
+++ b/testing/web-platform/tests/tools/scripts/id2path.json
@@ -810,13 +810,11 @@
     "using-the-microdata-dom-api": "microdata/introduction/using-the-microdata-dom-api",
     "encoding-microdata": "microdata/encoding-microdata",
     "the-microdata-model": "microdata/encoding-microdata/the-microdata-model",
     "items": "microdata/encoding-microdata/items",
     "names:-the-itemprop-attribute": "microdata/encoding-microdata/names-the-itemprop-attribute",
     "values": "microdata/encoding-microdata/values",
     "associating-names-with-items": "microdata/encoding-microdata/associating-names-with-items",
     "microdata-and-other-namespaces": "microdata/encoding-microdata/microdata-and-other-namespaces",
-    "microdata-dom-api": "microdata/microdata-dom-api",
-    "htmlpropertiescollection": "microdata/microdata-dom-api/htmlpropertiescollection",
     "converting-html-to-other-formats": "microdata/converting-html-to-other-formats",
     "json": "microdata/converting-html-to-other-formats/json"
-}
\ No newline at end of file
+}