--- a/devtools/shared/layout/utils.js
+++ b/devtools/shared/layout/utils.js
@@ -463,17 +463,17 @@ function getElementFromPoint(document, x
y -= rect.top + offsetTop;
if (x < 0 || y < 0) {
// Didn't reach the content document, still over the frame.
return node;
}
}
if (node instanceof Ci.nsIDOMHTMLIFrameElement ||
- node instanceof Ci.nsIDOMHTMLFrameElement) {
+ ChromeUtils.getClassName(node) === "HTMLFrameElement") {
let subnode = getElementFromPoint(node.contentDocument, x, y);
if (subnode) {
node = subnode;
}
}
}
return node;
}
--- a/dom/base/nsFrameLoader.cpp
+++ b/dom/base/nsFrameLoader.cpp
@@ -10,17 +10,16 @@
*/
#include "base/basictypes.h"
#include "prenv.h"
#include "nsDocShell.h"
#include "nsIDOMHTMLIFrameElement.h"
-#include "nsIDOMHTMLFrameElement.h"
#include "nsIDOMMozBrowserFrame.h"
#include "nsIDOMWindow.h"
#include "nsIPresShell.h"
#include "nsIContentInlines.h"
#include "nsIContentViewer.h"
#include "nsIDocument.h"
#include "nsIDOMDocument.h"
#include "nsPIDOMWindow.h"
--- a/dom/html/HTMLFrameElement.cpp
+++ b/dom/html/HTMLFrameElement.cpp
@@ -20,38 +20,20 @@ HTMLFrameElement::HTMLFrameElement(alrea
{
}
HTMLFrameElement::~HTMLFrameElement()
{
}
-NS_IMPL_ISUPPORTS_INHERITED(HTMLFrameElement, nsGenericHTMLFrameElement,
- nsIDOMHTMLFrameElement)
+NS_IMPL_ISUPPORTS_INHERITED0(HTMLFrameElement, nsGenericHTMLFrameElement)
NS_IMPL_ELEMENT_CLONE(HTMLFrameElement)
-
-NS_IMPL_STRING_ATTR(HTMLFrameElement, FrameBorder, frameborder)
-NS_IMPL_URI_ATTR(HTMLFrameElement, LongDesc, longdesc)
-NS_IMPL_STRING_ATTR(HTMLFrameElement, MarginHeight, marginheight)
-NS_IMPL_STRING_ATTR(HTMLFrameElement, MarginWidth, marginwidth)
-NS_IMPL_STRING_ATTR(HTMLFrameElement, Name, name)
-NS_IMPL_BOOL_ATTR(HTMLFrameElement, NoResize, noresize)
-NS_IMPL_STRING_ATTR(HTMLFrameElement, Scrolling, scrolling)
-NS_IMPL_URI_ATTR(HTMLFrameElement, Src, src)
-
-
-NS_IMETHODIMP
-HTMLFrameElement::GetContentDocument(nsIDOMDocument** aContentDocument)
-{
- return nsGenericHTMLFrameElement::GetContentDocument(aContentDocument);
-}
-
bool
HTMLFrameElement::ParseAttribute(int32_t aNamespaceID,
nsIAtom* aAttribute,
const nsAString& aValue,
nsAttrValue& aResult)
{
if (aNamespaceID == kNameSpaceID_None) {
if (aAttribute == nsGkAtoms::bordercolor) {
--- a/dom/html/HTMLFrameElement.h
+++ b/dom/html/HTMLFrameElement.h
@@ -3,93 +3,111 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_dom_HTMLFrameElement_h
#define mozilla_dom_HTMLFrameElement_h
#include "mozilla/Attributes.h"
-#include "nsIDOMHTMLFrameElement.h"
#include "nsGenericHTMLFrameElement.h"
#include "nsGkAtoms.h"
namespace mozilla {
namespace dom {
-class HTMLFrameElement final : public nsGenericHTMLFrameElement,
- public nsIDOMHTMLFrameElement
+class HTMLFrameElement final : public nsGenericHTMLFrameElement
{
public:
using nsGenericHTMLFrameElement::SwapFrameLoaders;
explicit HTMLFrameElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo,
FromParser aFromParser = NOT_FROM_PARSER);
// nsISupports
NS_DECL_ISUPPORTS_INHERITED
- // nsIDOMHTMLFrameElement
- NS_DECL_NSIDOMHTMLFRAMEELEMENT
+ NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLFrameElement, frame)
// nsIContent
virtual bool ParseAttribute(int32_t aNamespaceID,
nsIAtom* aAttribute,
const nsAString& aValue,
nsAttrValue& aResult) override;
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
bool aPreallocateChildren) const override;
// WebIDL API
- // The XPCOM GetFrameBorder is OK for us
+ void GetFrameBorder(DOMString& aFrameBorder) const
+ {
+ GetHTMLAttr(nsGkAtoms::frameborder, aFrameBorder);
+ }
void SetFrameBorder(const nsAString& aFrameBorder, ErrorResult& aError)
{
SetHTMLAttr(nsGkAtoms::frameborder, aFrameBorder, aError);
}
- // The XPCOM GetLongDesc is OK for us
+ void GetLongDesc(nsAString& aLongDesc) const
+ {
+ GetURIAttr(nsGkAtoms::longdesc, nullptr, aLongDesc);
+ }
void SetLongDesc(const nsAString& aLongDesc, ErrorResult& aError)
{
SetAttrHelper(nsGkAtoms::longdesc, aLongDesc);
}
- // The XPCOM GetMarginHeight is OK for us
+ void GetMarginHeight(DOMString& aMarginHeight) const
+ {
+ GetHTMLAttr(nsGkAtoms::marginheight, aMarginHeight);
+ }
void SetMarginHeight(const nsAString& aMarginHeight, ErrorResult& aError)
{
SetHTMLAttr(nsGkAtoms::marginheight, aMarginHeight, aError);
}
- // The XPCOM GetMarginWidth is OK for us
+ void GetMarginWidth(DOMString& aMarginWidth) const
+ {
+ GetHTMLAttr(nsGkAtoms::marginwidth, aMarginWidth);
+ }
void SetMarginWidth(const nsAString& aMarginWidth, ErrorResult& aError)
{
SetHTMLAttr(nsGkAtoms::marginwidth, aMarginWidth, aError);
}
- // The XPCOM GetName is OK for us
+ void GetName(DOMString& aName) const
+ {
+ GetHTMLAttr(nsGkAtoms::name, aName);
+ }
void SetName(const nsAString& aName, ErrorResult& aError)
{
SetHTMLAttr(nsGkAtoms::name, aName, aError);
}
bool NoResize() const
{
return GetBoolAttr(nsGkAtoms::noresize);
}
void SetNoResize(bool& aNoResize, ErrorResult& aError)
{
SetHTMLBoolAttr(nsGkAtoms::noresize, aNoResize, aError);
}
- // The XPCOM GetScrolling is OK for us
+ void GetScrolling(DOMString& aScrolling) const
+ {
+ GetHTMLAttr(nsGkAtoms::scrolling, aScrolling);
+ }
void SetScrolling(const nsAString& aScrolling, ErrorResult& aError)
{
SetHTMLAttr(nsGkAtoms::scrolling, aScrolling, aError);
}
- // The XPCOM GetSrc is OK for us
+ void GetSrc(nsAString& aSrc) const
+ {
+ GetURIAttr(nsGkAtoms::src, nullptr, aSrc);
+ }
void SetSrc(const nsAString& aSrc, ErrorResult& aError)
{
SetAttrHelper(nsGkAtoms::src, aSrc);
}
using nsGenericHTMLFrameElement::GetContentDocument;
using nsGenericHTMLFrameElement::GetContentWindow;
--- a/dom/html/moz.build
+++ b/dom/html/moz.build
@@ -27,16 +27,17 @@ XPIDL_SOURCES += [
'nsIImageDocument.idl',
'nsIMenuBuilder.idl',
]
XPIDL_MODULE = 'content_html'
EXPORTS += [
'nsGenericHTMLElement.h',
+ 'nsGenericHTMLFrameElement.h',
'nsHTMLDNSPrefetch.h',
'nsIConstraintValidation.h',
'nsIForm.h',
'nsIFormControl.h',
'nsIFormProcessor.h',
'nsIHTMLCollection.h',
'nsIHTMLDocument.h',
'nsIRadioGroupContainer.h',
--- a/dom/interfaces/html/moz.build
+++ b/dom/interfaces/html/moz.build
@@ -9,17 +9,16 @@ with Files("**"):
XPIDL_SOURCES += [
'nsIDOMHTMLBaseElement.idl',
'nsIDOMHTMLCanvasElement.idl',
'nsIDOMHTMLCollection.idl',
'nsIDOMHTMLDocument.idl',
'nsIDOMHTMLElement.idl',
'nsIDOMHTMLFormElement.idl',
- 'nsIDOMHTMLFrameElement.idl',
'nsIDOMHTMLHtmlElement.idl',
'nsIDOMHTMLIFrameElement.idl',
'nsIDOMHTMLImageElement.idl',
'nsIDOMHTMLInputElement.idl',
'nsIDOMHTMLLinkElement.idl',
'nsIDOMHTMLMediaElement.idl',
'nsIDOMHTMLMenuItemElement.idl',
'nsIDOMHTMLOptionElement.idl',
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLFrameElement.idl
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsIDOMHTMLElement.idl"
-
-/**
- * The nsIDOMHTMLFrameElement interface is the interface to a [X]HTML
- * frame element.
- *
- * This interface is trying to follow the DOM Level 2 HTML specification:
- * http://www.w3.org/TR/DOM-Level-2-HTML/
- *
- * with changes from the work-in-progress WHATWG HTML specification:
- * http://www.whatwg.org/specs/web-apps/current-work/
- */
-
-[uuid(012a8982-c9d3-4614-91e2-18ee51c97c06)]
-interface nsIDOMHTMLFrameElement : nsISupports
-{
- attribute DOMString frameBorder;
- attribute DOMString longDesc;
- attribute DOMString marginHeight;
- attribute DOMString marginWidth;
- attribute DOMString name;
- attribute boolean noResize;
- attribute DOMString scrolling;
- attribute DOMString src;
- // Introduced in DOM Level 2:
- readonly attribute nsIDOMDocument contentDocument;
-};
--- a/dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
+++ b/dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
@@ -20,17 +20,16 @@
#include "nsIComponentRegistrar.h"
#include "nsIContent.h"
#include "nsIDOMAttr.h"
#include "nsIDOMComment.h"
#include "nsIDOMDocument.h"
#include "nsIDOMHTMLBaseElement.h"
#include "nsIDOMHTMLCollection.h"
#include "nsIDOMHTMLDocument.h"
-#include "nsIDOMHTMLFrameElement.h"
#include "nsIDOMHTMLIFrameElement.h"
#include "nsIDOMHTMLImageElement.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLLinkElement.h"
#include "nsIDOMHTMLMediaElement.h"
#include "nsIDOMHTMLOptionElement.h"
#include "nsIDOMHTMLScriptElement.h"
#include "nsIDOMHTMLSourceElement.h"
@@ -570,18 +569,17 @@ ResourceReader::OnWalkDOMNode(nsIDOMNode
if (current == end) {
break;
}
}
}
return NS_OK;
}
- nsCOMPtr<nsIDOMHTMLFrameElement> nodeAsFrame = do_QueryInterface(aNode);
- if (nodeAsFrame) {
+ if (content->IsHTMLElement(nsGkAtoms::frame)) {
return OnWalkSubframe(aNode);
}
nsCOMPtr<nsIDOMHTMLIFrameElement> nodeAsIFrame = do_QueryInterface(aNode);
if (nodeAsIFrame && !(mPersistFlags &
IWBP::PERSIST_FLAGS_IGNORE_IFRAMES)) {
return OnWalkSubframe(aNode);
}
@@ -1084,18 +1082,17 @@ PersistNodeFixup::FixupNode(nsIDOMNode *
FixupAnchor(*aNodeOut);
}
// TODO if "type" attribute == "text/css"
// fixup stylesheet
}
return rv;
}
- nsCOMPtr<nsIDOMHTMLFrameElement> nodeAsFrame = do_QueryInterface(aNodeIn);
- if (nodeAsFrame) {
+ if (content->IsHTMLElement(nsGkAtoms::frame)) {
rv = GetNodeToFixup(aNodeIn, aNodeOut);
if (NS_SUCCEEDED(rv) && *aNodeOut) {
FixupAttribute(*aNodeOut, "src");
}
return rv;
}
nsCOMPtr<nsIDOMHTMLIFrameElement> nodeAsIFrame = do_QueryInterface(aNodeIn);
--- a/editor/libeditor/HTMLEditorDataTransfer.cpp
+++ b/editor/libeditor/HTMLEditorDataTransfer.cpp
@@ -34,17 +34,16 @@
#include "nsGkAtoms.h"
#include "nsIClipboard.h"
#include "nsIContent.h"
#include "nsIContentFilter.h"
#include "nsIDOMComment.h"
#include "nsIDOMDocument.h"
#include "nsIDOMDocumentFragment.h"
#include "nsIDOMElement.h"
-#include "nsIDOMHTMLFrameElement.h"
#include "nsIDOMHTMLIFrameElement.h"
#include "nsIDOMHTMLImageElement.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLLinkElement.h"
#include "nsIDOMHTMLScriptElement.h"
#include "nsIDOMNode.h"
#include "nsIDocument.h"
#include "nsIEditRules.h"
--- a/layout/generic/nsSubDocumentFrame.cpp
+++ b/layout/generic/nsSubDocumentFrame.cpp
@@ -23,30 +23,30 @@
#include "nsPresContext.h"
#include "nsIPresShell.h"
#include "nsIDocument.h"
#include "nsView.h"
#include "nsViewManager.h"
#include "nsGkAtoms.h"
#include "nsStyleConsts.h"
#include "nsFrameSetFrame.h"
-#include "nsIDOMHTMLFrameElement.h"
#include "nsIScrollable.h"
#include "nsNameSpaceManager.h"
#include "nsDisplayList.h"
#include "nsIScrollableFrame.h"
#include "nsIObjectLoadingContent.h"
#include "nsLayoutUtils.h"
#include "FrameLayerBuilder.h"
#include "nsPluginFrame.h"
#include "nsContentUtils.h"
#include "nsIPermissionManager.h"
#include "nsServiceManagerUtils.h"
#include "nsIDOMMutationEvent.h"
#include "mozilla/Preferences.h"
+#include "mozilla/dom/HTMLFrameElement.h"
using namespace mozilla;
using mozilla::layout::RenderFrameParent;
static bool sShowPreviousPage = true;
static nsIDocument*
GetDocumentFromView(nsView* aView)
@@ -107,19 +107,19 @@ InsertViewsInReverseOrder(nsView* aSibli
static void
EndSwapDocShellsForViews(nsView* aView);
void
nsSubDocumentFrame::Init(nsIContent* aContent,
nsContainerFrame* aParent,
nsIFrame* aPrevInFlow)
{
+ MOZ_ASSERT(aContent);
// determine if we are a <frame> or <iframe>
- nsCOMPtr<nsIDOMHTMLFrameElement> frameElem = do_QueryInterface(aContent);
- mIsInline = frameElem ? false : true;
+ mIsInline = !aContent->IsHTMLElement(nsGkAtoms::frame);
static bool addedShowPreviousPage = false;
if (!addedShowPreviousPage) {
// If layout.show_previous_page is true then during loading of a new page we
// will draw the previous page if the new page has painting suppressed.
Preferences::AddBoolVarCache(&sShowPreviousPage, "layout.show_previous_page", true);
addedShowPreviousPage = true;
}
@@ -279,19 +279,17 @@ nsSubDocumentFrame::GetSubdocumentSize()
}
}
// Pick some default size for now. Using 10x10 because that's what the
// code used to do.
return ScreenIntSize(10, 10);
} else {
nsSize docSizeAppUnits;
nsPresContext* presContext = PresContext();
- nsCOMPtr<nsIDOMHTMLFrameElement> frameElem =
- do_QueryInterface(GetContent());
- if (frameElem) {
+ if (GetContent()->IsHTMLElement(nsGkAtoms::frame)) {
docSizeAppUnits = GetSize();
} else {
docSizeAppUnits = GetContentRect().Size();
}
// Adjust subdocument size, according to 'object-fit' and the
// subdocument's intrinsic size and ratio.
nsIFrame* subDocRoot = ObtainIntrinsicSizeFrame();
if (subDocRoot) {
--- a/layout/printing/nsPrintEngine.cpp
+++ b/layout/printing/nsPrintEngine.cpp
@@ -35,17 +35,16 @@
static const char sPrintSettingsServiceContractID[] = "@mozilla.org/gfx/printsettings-service;1";
// Printing Events
#include "nsPrintPreviewListener.h"
#include "nsThreadUtils.h"
// Printing
#include "nsIWebBrowserPrint.h"
-#include "nsIDOMHTMLFrameElement.h"
#include "nsIDOMHTMLIFrameElement.h"
// Print Preview
#include "imgIContainer.h" // image animation mode constants
#include "nsIWebBrowserPrint.h" // needed for PrintPreview Navigation constants
// Print Progress
#include "nsIPrintProgress.h"
@@ -110,16 +109,17 @@ static const char kPrintingPromptService
#include "nsIContentViewer.h"
#include "nsIDocumentViewerPrint.h"
#include "nsFocusManager.h"
#include "nsRange.h"
#include "nsCDefaultURIFixup.h"
#include "nsIURIFixup.h"
#include "mozilla/dom/Element.h"
+#include "mozilla/dom/HTMLFrameElement.h"
#include "nsContentList.h"
#include "nsIChannel.h"
#include "xpcpublic.h"
#include "nsVariant.h"
#include "mozilla/StyleSetHandle.h"
#include "mozilla/StyleSetHandleInlines.h"
using namespace mozilla;
@@ -1372,21 +1372,19 @@ nsPrintEngine::MapContentForPO(const Uni
po = kid.get();
break;
}
}
// XXX If a subdocument has no onscreen presentation, there will be no PO
// This is even if there should be a print presentation
if (po) {
-
- nsCOMPtr<nsIDOMHTMLFrameElement> frame(do_QueryInterface(aContent));
// "frame" elements not in a frameset context should be treated
// as iframes
- if (frame && po->mParent->mFrameType == eFrameSet) {
+ if (aContent->IsHTMLElement(nsGkAtoms::frame) && po->mParent->mFrameType == eFrameSet) {
po->mFrameType = eFrame;
} else {
// Assume something iframe-like, i.e. iframe, object, or embed
po->mFrameType = eIFrame;
SetPrintAsIs(po, true);
NS_ASSERTION(po->mParent, "The root must be a parent");
po->mParent->mPrintAsIs = true;
}
--- a/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
+++ b/xpcom/reflect/xptinfo/ShimInterfaceInfo.cpp
@@ -46,17 +46,16 @@
#include "nsIDOMGeoPositionError.h"
#include "nsIDOMHistory.h"
#include "nsIDOMHTMLBaseElement.h"
#include "nsIDOMHTMLCanvasElement.h"
#include "nsIDOMHTMLCollection.h"
#include "nsIDOMHTMLDocument.h"
#include "nsIDOMHTMLElement.h"
#include "nsIDOMHTMLFormElement.h"
-#include "nsIDOMHTMLFrameElement.h"
#include "nsIDOMHTMLHtmlElement.h"
#include "nsIDOMHTMLIFrameElement.h"
#include "nsIDOMHTMLImageElement.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLLinkElement.h"
#include "nsIDOMHTMLMediaElement.h"
#include "nsIDOMHTMLMenuItemElement.h"
#include "nsIDOMHTMLOptionElement.h"
@@ -155,17 +154,16 @@
#include "mozilla/dom/HTMLAreaElementBinding.h"
#include "mozilla/dom/HTMLBaseElementBinding.h"
#include "mozilla/dom/HTMLButtonElementBinding.h"
#include "mozilla/dom/HTMLCanvasElementBinding.h"
#include "mozilla/dom/HTMLCollectionBinding.h"
#include "mozilla/dom/HTMLDocumentBinding.h"
#include "mozilla/dom/HTMLElementBinding.h"
#include "mozilla/dom/HTMLFormElementBinding.h"
-#include "mozilla/dom/HTMLFrameElementBinding.h"
#include "mozilla/dom/HTMLFrameSetElementBinding.h"
#include "mozilla/dom/HTMLHtmlElementBinding.h"
#include "mozilla/dom/HTMLIFrameElementBinding.h"
#include "mozilla/dom/HTMLImageElementBinding.h"
#include "mozilla/dom/HTMLInputElementBinding.h"
#include "mozilla/dom/HTMLLinkElementBinding.h"
#include "mozilla/dom/HTMLMediaElementBinding.h"
#include "mozilla/dom/HTMLMenuItemElementBinding.h"
@@ -319,17 +317,16 @@ const ComponentsInterfaceShimEntry kComp
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIDOMGeoPositionError, PositionError),
DEFINE_SHIM(History),
DEFINE_SHIM(HTMLBaseElement),
DEFINE_SHIM(HTMLCanvasElement),
DEFINE_SHIM(HTMLCollection),
DEFINE_SHIM(HTMLDocument),
DEFINE_SHIM(HTMLElement),
DEFINE_SHIM(HTMLFormElement),
- DEFINE_SHIM(HTMLFrameElement),
DEFINE_SHIM(HTMLHtmlElement),
DEFINE_SHIM(HTMLIFrameElement),
DEFINE_SHIM(HTMLImageElement),
DEFINE_SHIM(HTMLInputElement),
DEFINE_SHIM(HTMLLinkElement),
DEFINE_SHIM(HTMLMediaElement),
DEFINE_SHIM(HTMLMenuItemElement),
DEFINE_SHIM(HTMLOptionElement),