--- a/accessible/generic/ImageAccessible.cpp
+++ b/accessible/generic/ImageAccessible.cpp
@@ -12,17 +12,16 @@
#include "imgIContainer.h"
#include "imgIRequest.h"
#include "nsGenericHTMLElement.h"
#include "nsIDocument.h"
#include "nsIImageLoadingContent.h"
#include "nsIPresShell.h"
#include "nsIServiceManager.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsIPersistentProperties2.h"
#include "nsPIDOMWindow.h"
#include "nsIURI.h"
using namespace mozilla::a11y;
////////////////////////////////////////////////////////////////////////////////
// ImageAccessible
--- a/browser/components/shell/nsGNOMEShellService.cpp
+++ b/browser/components/shell/nsGNOMEShellService.cpp
@@ -18,17 +18,17 @@
#include "nsIGConfService.h"
#include "nsIGIOService.h"
#include "nsIGSettingsService.h"
#include "nsIStringBundle.h"
#include "nsIOutputStream.h"
#include "nsIProcess.h"
#include "nsServiceManagerUtils.h"
#include "nsComponentManagerUtils.h"
-#include "nsIDOMHTMLImageElement.h"
+#include "nsIDOMElement.h"
#include "nsIImageLoadingContent.h"
#include "imgIRequest.h"
#include "imgIContainer.h"
#include "mozilla/Sprintf.h"
#if defined(MOZ_WIDGET_GTK)
#include "nsIImageToPixbuf.h"
#endif
#include "nsXULAppAPI.h"
--- a/browser/components/shell/nsMacShellService.cpp
+++ b/browser/components/shell/nsMacShellService.cpp
@@ -1,16 +1,15 @@
/* -*- Mode: C++; 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 "nsDirectoryServiceDefs.h"
#include "nsIDOMElement.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsIImageLoadingContent.h"
#include "nsIDocument.h"
#include "nsIContent.h"
#include "nsILocalFileMac.h"
#include "nsIObserverService.h"
#include "nsIPrefService.h"
#include "nsIServiceManager.h"
#include "nsIStringBundle.h"
--- a/browser/components/shell/nsWindowsShellService.cpp
+++ b/browser/components/shell/nsWindowsShellService.cpp
@@ -6,18 +6,18 @@
#include "nsWindowsShellService.h"
#include "BinaryPath.h"
#include "city.h"
#include "imgIContainer.h"
#include "imgIRequest.h"
#include "mozilla/gfx/2D.h"
#include "mozilla/RefPtr.h"
+#include "nsIContent.h"
#include "nsIDOMElement.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsIImageLoadingContent.h"
#include "nsIOutputStream.h"
#include "nsIPrefService.h"
#include "nsIPrefLocalizedString.h"
#include "nsIServiceManager.h"
#include "nsIStringBundle.h"
#include "nsNetUtil.h"
#include "nsServiceManagerUtils.h"
@@ -574,40 +574,39 @@ WriteBitmap(nsIFile* aFile, imgIContaine
return rv;
}
NS_IMETHODIMP
nsWindowsShellService::SetDesktopBackground(nsIDOMElement* aElement,
int32_t aPosition,
const nsACString& aImageName)
{
- nsresult rv;
-
- nsCOMPtr<imgIContainer> container;
- nsCOMPtr<nsIDOMHTMLImageElement> imgElement(do_QueryInterface(aElement));
- if (!imgElement) {
+ nsCOMPtr<nsIContent> content(do_QueryInterface(aElement));
+ if (!content || !content->IsHTMLElement(nsGkAtoms::img)) {
// XXX write background loading stuff!
return NS_ERROR_NOT_AVAILABLE;
}
- else {
- nsCOMPtr<nsIImageLoadingContent> imageContent =
- do_QueryInterface(aElement, &rv);
- if (!imageContent)
- return rv;
+
+ nsresult rv;
+ nsCOMPtr<nsIImageLoadingContent> imageContent =
+ do_QueryInterface(aElement, &rv);
+ if (!imageContent)
+ return rv;
- // get the image container
- nsCOMPtr<imgIRequest> request;
- rv = imageContent->GetRequest(nsIImageLoadingContent::CURRENT_REQUEST,
- getter_AddRefs(request));
- if (!request)
- return rv;
- rv = request->GetImage(getter_AddRefs(container));
- if (!container)
- return NS_ERROR_FAILURE;
- }
+ // get the image container
+ nsCOMPtr<imgIRequest> request;
+ rv = imageContent->GetRequest(nsIImageLoadingContent::CURRENT_REQUEST,
+ getter_AddRefs(request));
+ if (!request)
+ return rv;
+
+ nsCOMPtr<imgIContainer> container;
+ rv = request->GetImage(getter_AddRefs(container));
+ if (!container)
+ return NS_ERROR_FAILURE;
// get the file name from localized strings
nsCOMPtr<nsIStringBundleService>
bundleService(do_GetService(NS_STRINGBUNDLE_CONTRACTID, &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIStringBundle> shellBundle;
rv = bundleService->CreateBundle(SHELLSERVICE_PROPERTIES,
--- a/docshell/base/nsContextMenuInfo.cpp
+++ b/docshell/base/nsContextMenuInfo.cpp
@@ -7,17 +7,16 @@
#include "nsContextMenuInfo.h"
#include "nsIImageLoadingContent.h"
#include "imgLoader.h"
#include "nsIDOMDocument.h"
#include "nsIDOMHTMLDocument.h"
#include "nsIDOMHTMLElement.h"
#include "nsIDOMHTMLHtmlElement.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsIDOMWindow.h"
#include "nsICSSDeclaration.h"
#include "nsIDOMCSSValue.h"
#include "nsIDOMCSSPrimitiveValue.h"
#include "nsNetUtil.h"
#include "nsUnicharUtils.h"
#include "nsIDocument.h"
#include "nsIPrincipal.h"
--- a/dom/browser-element/BrowserElementChildPreload.js
+++ b/dom/browser-element/BrowserElementChildPreload.js
@@ -860,17 +860,17 @@ BrowserElementChild.prototype = {
(ChromeUtils.getClassName(elem) === "HTMLAreaElement" && elem.href)) {
return {uri: elem.href,
documentURI: documentURI,
text: elem.textContent.substring(0, kLongestReturnedString)};
}
if (elem instanceof Ci.nsIImageLoadingContent && elem.currentURI) {
return {uri: elem.currentURI.spec, documentURI: documentURI};
}
- if (elem instanceof Ci.nsIDOMHTMLImageElement) {
+ if (ChromeUtils.getClassName(elem) === "HTMLImageElement") {
return {uri: elem.src, documentURI: documentURI};
}
if (elem instanceof Ci.nsIDOMHTMLMediaElement) {
let hasVideo = !(elem.readyState >= elem.HAVE_METADATA &&
(elem.videoWidth == 0 || elem.videoHeight == 0));
return {uri: elem.currentSrc || elem.src,
hasVideo: hasVideo,
documentURI: documentURI};
--- a/dom/html/HTMLImageElement.cpp
+++ b/dom/html/HTMLImageElement.cpp
@@ -133,17 +133,16 @@ HTMLImageElement::~HTMLImageElement()
NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLImageElement,
nsGenericHTMLElement,
mResponsiveSelector)
NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED(HTMLImageElement,
nsGenericHTMLElement,
- nsIDOMHTMLImageElement,
nsIImageLoadingContent,
imgIOnloadBlocker,
imgINotificationObserver)
NS_IMPL_ELEMENT_CLONE(HTMLImageElement)
bool
@@ -751,16 +750,23 @@ HTMLImageElement::Image(const GlobalObje
return nullptr;
}
}
}
return img.forget();
}
+NS_IMETHODIMP
+HTMLImageElement::GetNaturalHeight(uint32_t* aNaturalHeight)
+{
+ *aNaturalHeight = NaturalHeight();
+ return NS_OK;
+}
+
uint32_t
HTMLImageElement::NaturalHeight()
{
uint32_t height;
nsresult rv = nsImageLoadingContent::GetNaturalHeight(&height);
if (NS_FAILED(rv)) {
MOZ_ASSERT(false, "GetNaturalHeight should not fail");
@@ -772,19 +778,19 @@ HTMLImageElement::NaturalHeight()
MOZ_ASSERT(density >= 0.0);
height = NSToIntRound(double(height) / density);
}
return height;
}
NS_IMETHODIMP
-HTMLImageElement::GetNaturalHeight(uint32_t* aNaturalHeight)
+HTMLImageElement::GetNaturalWidth(uint32_t* aNaturalWidth)
{
- *aNaturalHeight = NaturalHeight();
+ *aNaturalWidth = NaturalWidth();
return NS_OK;
}
uint32_t
HTMLImageElement::NaturalWidth()
{
uint32_t width;
nsresult rv = nsImageLoadingContent::GetNaturalWidth(&width);
@@ -798,23 +804,16 @@ HTMLImageElement::NaturalWidth()
double density = mResponsiveSelector->GetSelectedImageDensity();
MOZ_ASSERT(density >= 0.0);
width = NSToIntRound(double(width) / density);
}
return width;
}
-NS_IMETHODIMP
-HTMLImageElement::GetNaturalWidth(uint32_t* aNaturalWidth)
-{
- *aNaturalWidth = NaturalWidth();
- return NS_OK;
-}
-
nsresult
HTMLImageElement::CopyInnerTo(Element* aDest, bool aPreallocateChildren)
{
bool destIsStatic = aDest->OwnerDoc()->IsStaticDocument();
auto dest = static_cast<HTMLImageElement*>(aDest);
if (destIsStatic) {
CreateStaticImageClone(dest);
}
--- a/dom/html/HTMLImageElement.h
+++ b/dom/html/HTMLImageElement.h
@@ -5,31 +5,29 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_dom_HTMLImageElement_h
#define mozilla_dom_HTMLImageElement_h
#include "mozilla/Attributes.h"
#include "nsGenericHTMLElement.h"
#include "nsImageLoadingContent.h"
-#include "nsIDOMHTMLImageElement.h"
#include "imgRequestProxy.h"
#include "Units.h"
#include "nsCycleCollectionParticipant.h"
namespace mozilla {
class EventChainPreVisitor;
namespace dom {
class ImageLoadTask;
class ResponsiveImageSelector;
class HTMLImageElement final : public nsGenericHTMLElement,
- public nsImageLoadingContent,
- public nsIDOMHTMLImageElement
+ public nsImageLoadingContent
{
friend class HTMLSourceElement;
friend class HTMLPictureElement;
friend class ImageLoadTask;
public:
explicit HTMLImageElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
static already_AddRefed<HTMLImageElement>
@@ -47,19 +45,16 @@ public:
virtual bool Draggable() const override;
// Element
virtual bool IsInteractiveHTMLContent(bool aIgnoreTabindex) const override;
// EventTarget
virtual void AsyncEventRunning(AsyncEventDispatcher* aEvent) override;
- // nsIDOMHTMLImageElement
- NS_DECL_NSIDOMHTMLIMAGEELEMENT
-
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLImageElement, img)
// override from nsImageLoadingContent
CORSMode GetCORSMode() override;
// nsIContent
virtual bool ParseAttribute(int32_t aNamespaceID,
nsAtom* aAttribute,
@@ -85,16 +80,21 @@ public:
bool aPreallocateChildren) const override;
virtual void NodeInfoChanged(nsIDocument* aOldDoc) override;
nsresult CopyInnerTo(Element* aDest, bool aPreallocateChildren);
void MaybeLoadImage(bool aAlwaysForceLoad);
+ // Overrides for nsImageLoadingContent's GetNaturalHeight/Width, since we
+ // handle responsive scaling in the element's version of these methods.
+ NS_IMETHOD GetNaturalHeight(uint32_t* aNaturalHeight) override;
+ NS_IMETHOD GetNaturalWidth(uint32_t* aNaturalWidth) override;
+
bool IsMap()
{
return GetBoolAttr(nsGkAtoms::ismap);
}
void SetIsMap(bool aIsMap, ErrorResult& aError)
{
SetHTMLBoolAttr(nsGkAtoms::ismap, aIsMap, aError);
}
@@ -390,18 +390,16 @@ protected:
nsIPrincipal* aMaybeScriptedPrincipal,
bool aNotify) override;
virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
const nsAttrValueOrString& aValue,
bool aNotify) override;
// Override for nsImageLoadingContent.
nsIContent* AsContent() override { return this; }
- NS_IMETHOD GetNaturalWidth(uint32_t* aNaturalWidth) override;
- NS_IMETHOD GetNaturalHeight(uint32_t* aNaturalHeight) override;
// This is a weak reference that this element and the HTMLFormElement
// cooperate in maintaining.
HTMLFormElement* mForm;
// Created when we're tracking responsive image state
RefPtr<ResponsiveImageSelector> mResponsiveSelector;
--- a/dom/html/ImageDocument.cpp
+++ b/dom/html/ImageDocument.cpp
@@ -8,17 +8,16 @@
#include "mozilla/dom/ImageDocumentBinding.h"
#include "mozilla/dom/HTMLImageElement.h"
#include "nsRect.h"
#include "nsIImageLoadingContent.h"
#include "nsGenericHTMLElement.h"
#include "nsDocShell.h"
#include "nsIDocumentInlines.h"
#include "nsDOMTokenList.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsIDOMEvent.h"
#include "nsIDOMKeyEvent.h"
#include "nsIDOMMouseEvent.h"
#include "nsIDOMEventListener.h"
#include "nsIFrame.h"
#include "nsGkAtoms.h"
#include "imgIRequest.h"
#include "imgILoader.h"
--- a/dom/interfaces/html/moz.build
+++ b/dom/interfaces/html/moz.build
@@ -9,17 +9,16 @@ with Files("**"):
XPIDL_SOURCES += [
'nsIDOMHTMLBaseElement.idl',
'nsIDOMHTMLCollection.idl',
'nsIDOMHTMLDocument.idl',
'nsIDOMHTMLElement.idl',
'nsIDOMHTMLFormElement.idl',
'nsIDOMHTMLHtmlElement.idl',
- 'nsIDOMHTMLImageElement.idl',
'nsIDOMHTMLInputElement.idl',
'nsIDOMHTMLMediaElement.idl',
'nsIDOMHTMLMenuItemElement.idl',
'nsIDOMHTMLOptionElement.idl',
'nsIDOMHTMLOptionsCollection.idl',
'nsIDOMHTMLScriptElement.idl',
'nsIDOMHTMLSelectElement.idl',
'nsIDOMHTMLSourceElement.idl',
deleted file mode 100644
--- a/dom/interfaces/html/nsIDOMHTMLImageElement.idl
+++ /dev/null
@@ -1,22 +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 nsIDOMHTMLImageElement interface is the interface to a [X]HTML
- * img 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(ec18e71c-4f5c-4cc3-aa36-5273168644dc)]
-interface nsIDOMHTMLImageElement : nsISupports
-{
-};
--- a/dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
+++ b/dom/webbrowserpersist/WebBrowserPersistLocalDocument.cpp
@@ -21,17 +21,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 "nsIDOMHTMLImageElement.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLMediaElement.h"
#include "nsIDOMHTMLOptionElement.h"
#include "nsIDOMHTMLScriptElement.h"
#include "nsIDOMHTMLSourceElement.h"
#include "nsIDOMHTMLTextAreaElement.h"
#include "nsIDOMMozNamedAttrMap.h"
#include "nsIDOMNode.h"
@@ -478,18 +477,17 @@ ResourceReader::OnWalkDOMNode(nsIDOMNode
}
nsCOMPtr<nsIContent> content = do_QueryInterface(aNode);
if (!content) {
return NS_OK;
}
// Test the node to see if it's an image, frame, iframe, css, js
- nsCOMPtr<nsIDOMHTMLImageElement> nodeAsImage = do_QueryInterface(aNode);
- if (nodeAsImage) {
+ if (content->IsHTMLElement(nsGkAtoms::img)) {
return OnWalkAttribute(aNode, "src");
}
if (content->IsSVGElement(nsGkAtoms::img)) {
return OnWalkAttribute(aNode, "href", "http://www.w3.org/1999/xlink");
}
nsCOMPtr<nsIDOMHTMLMediaElement> nodeAsMedia = do_QueryInterface(aNode);
@@ -982,18 +980,17 @@ PersistNodeFixup::FixupNode(nsIDOMNode *
if (content->IsAnyOfHTMLElements(nsGkAtoms::td, nsGkAtoms::th)) {
rv = GetNodeToFixup(aNodeIn, aNodeOut);
if (NS_SUCCEEDED(rv) && *aNodeOut) {
FixupAttribute(*aNodeOut, "background");
}
return rv;
}
- nsCOMPtr<nsIDOMHTMLImageElement> nodeAsImage = do_QueryInterface(aNodeIn);
- if (nodeAsImage) {
+ if (content->IsHTMLElement(nsGkAtoms::img)) {
rv = GetNodeToFixup(aNodeIn, aNodeOut);
if (NS_SUCCEEDED(rv) && *aNodeOut) {
// Disable image loads
nsCOMPtr<nsIImageLoadingContent> imgCon =
do_QueryInterface(*aNodeOut);
if (imgCon) {
imgCon->SetLoadingEnabled(false);
}
--- 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 "nsIDOMHTMLImageElement.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLScriptElement.h"
#include "nsIDOMNode.h"
#include "nsIDocument.h"
#include "nsIEditRules.h"
#include "nsIFile.h"
#include "nsIInputStream.h"
#include "nsIMIMEService.h"
--- a/layout/base/nsDocumentViewer.cpp
+++ b/layout/base/nsDocumentViewer.cpp
@@ -59,17 +59,16 @@
#include "nsIInterfaceRequestorUtils.h"
#include "nsDocShell.h"
#include "nsIBaseWindow.h"
#include "nsILayoutHistoryState.h"
#include "nsCharsetSource.h"
#include "mozilla/ReflowInput.h"
#include "nsIImageLoadingContent.h"
#include "nsCopySupport.h"
-#include "nsIDOMHTMLImageElement.h"
#ifdef MOZ_XUL
#include "nsIXULDocument.h"
#include "nsXULPopupManager.h"
#endif
#include "nsIClipboardHelper.h"
#include "nsPIDOMWindow.h"
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -7462,17 +7462,17 @@ nsLayoutUtils::SurfaceFromElement(nsIIma
return result;
}
uint32_t status;
imgRequest->GetImageStatus(&status);
result.mHasSize = status & imgIRequest::STATUS_SIZE_AVAILABLE;
if ((status & imgIRequest::STATUS_LOAD_COMPLETE) == 0) {
// Spec says to use GetComplete, but that only works on
- // nsIDOMHTMLImageElement, and we support all sorts of other stuff
+ // HTMLImageElement, and we support all sorts of other stuff
// here. Do this for now pending spec clarification.
result.mIsStillLoading = (status & imgIRequest::STATUS_ERROR) == 0;
return result;
}
nsCOMPtr<nsIPrincipal> principal;
rv = imgRequest->GetImagePrincipal(getter_AddRefs(principal));
if (NS_FAILED(rv)) {
--- a/layout/generic/nsVideoFrame.cpp
+++ b/layout/generic/nsVideoFrame.cpp
@@ -8,17 +8,16 @@
#include "nsVideoFrame.h"
#include "nsCOMPtr.h"
#include "nsGkAtoms.h"
#include "mozilla/dom/HTMLVideoElement.h"
#include "mozilla/layers/WebRenderLayerManager.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsDisplayList.h"
#include "nsGenericHTMLElement.h"
#include "nsPresContext.h"
#include "nsContentCreatorFunctions.h"
#include "nsBoxLayoutState.h"
#include "nsBoxFrame.h"
#include "nsImageFrame.h"
#include "nsIImageLoadingContent.h"
--- a/layout/printing/nsPrintEngine.cpp
+++ b/layout/printing/nsPrintEngine.cpp
@@ -96,17 +96,16 @@ static const char kPrintingPromptService
#include "nsIInterfaceRequestor.h"
#include "nsIInterfaceRequestorUtils.h"
#include "nsIDocShellTreeOwner.h"
#include "nsIWebBrowserChrome.h"
#include "nsIBaseWindow.h"
#include "nsILayoutHistoryState.h"
#include "nsFrameManager.h"
#include "mozilla/ReflowInput.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsIContentViewerContainer.h"
#include "nsIContentViewer.h"
#include "nsIDocumentViewerPrint.h"
#include "nsFocusManager.h"
#include "nsRange.h"
#include "nsCDefaultURIFixup.h"
#include "nsIURIFixup.h"
--- a/layout/xul/nsImageBoxFrame.cpp
+++ b/layout/xul/nsImageBoxFrame.cpp
@@ -26,17 +26,16 @@
#include "nsIPresShell.h"
#include "nsIDocument.h"
#include "nsImageMap.h"
#include "nsILinkHandler.h"
#include "nsIURL.h"
#include "nsILoadGroup.h"
#include "nsContainerFrame.h"
#include "nsCSSRendering.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsNameSpaceManager.h"
#include "nsTextFragment.h"
#include "nsTransform2D.h"
#include "nsITheme.h"
#include "nsIServiceManager.h"
#include "nsIURI.h"
#include "nsThreadUtils.h"
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -2523,29 +2523,29 @@ var NativeWindow = {
if (uri)
return uri.schemeIs("tel");
return false;
}
},
imageLocationCopyableContext: {
matches: function imageLinkCopyableContextMatches(aElement) {
- if (aElement instanceof Ci.nsIDOMHTMLImageElement) {
+ if (ChromeUtils.getClassName(aElement) === "HTMLImageElement") {
// The image is blocked by Tap-to-load Images
if (aElement.hasAttribute("data-ctv-src") && !aElement.hasAttribute("data-ctv-show")) {
return false;
}
}
return (aElement instanceof Ci.nsIImageLoadingContent && aElement.currentURI);
}
},
imageSaveableContext: {
matches: function imageSaveableContextMatches(aElement) {
- if (aElement instanceof Ci.nsIDOMHTMLImageElement) {
+ if (ChromeUtils.getClassName(aElement) === "HTMLImageElement") {
// The image is blocked by Tap-to-load Images
if (aElement.hasAttribute("data-ctv-src") && !aElement.hasAttribute("data-ctv-show")) {
return false;
}
}
if (aElement instanceof Ci.nsIImageLoadingContent && aElement.currentURI) {
// The image must be loaded to allow saving
let request = aElement.getRequest(Ci.nsIImageLoadingContent.CURRENT_REQUEST);
@@ -2553,17 +2553,17 @@ var NativeWindow = {
}
return false;
}
},
imageShareableContext: {
matches: aElement => {
let imgSrc = '';
- if (aElement instanceof Ci.nsIDOMHTMLImageElement) {
+ if (ChromeUtils.getClassName(aElement) === "HTMLImageElement") {
imgSrc = aElement.src;
} else if (aElement instanceof Ci.nsIImageLoadingContent &&
aElement.currentURI &&
aElement.currentURI.spec) {
imgSrc = aElement.currentURI.spec;
}
// In order to share an image, we need to pass the image src over IPC via an Intent (in
@@ -2583,17 +2583,18 @@ var NativeWindow = {
matches: function mediaSaveableContextMatches(aElement) {
return (aElement instanceof HTMLVideoElement ||
aElement instanceof HTMLAudioElement);
}
},
imageBlockingPolicyContext: {
matches: function imageBlockingPolicyContextMatches(aElement) {
- if (aElement instanceof Ci.nsIDOMHTMLImageElement && aElement.getAttribute("data-ctv-src")) {
+ if (ChromeUtils.getClassName(aElement) === "HTMLImageElement" &&
+ aElement.getAttribute("data-ctv-src")) {
// Only show the menuitem if we are blocking the image
if (aElement.getAttribute("data-ctv-show") == "true") {
return false;
}
return true;
}
return false;
}
--- a/mobile/android/components/ImageBlockingPolicy.js
+++ b/mobile/android/components/ImageBlockingPolicy.js
@@ -47,17 +47,17 @@ ImageBlockingPolicy.prototype = {
// When enabled or when on cellular, and option for cellular-only is selected
if (this._enabled() == OPTION_NEVER || (this._enabled() == OPTION_WIFI_ONLY && this._usingCellular())) {
if (contentType === Ci.nsIContentPolicy.TYPE_IMAGE || contentType === Ci.nsIContentPolicy.TYPE_IMAGESET) {
// Accept any non-http(s) image URLs
if (!contentLocation.schemeIs("http") && !contentLocation.schemeIs("https")) {
return Ci.nsIContentPolicy.ACCEPT;
}
- if (node instanceof Ci.nsIDOMHTMLImageElement) {
+ if (ChromeUtils.getClassName(node) === "HTMLImageElement") {
// Accept if the user has asked to view the image
if (node.getAttribute("data-ctv-show") == "true") {
sendImageSizeTelemetry(node.getAttribute("data-ctv-src"));
return Ci.nsIContentPolicy.ACCEPT;
}
setTimeout(() => {
// Cache the original image URL and swap in our placeholder
--- a/parser/html/nsHtml5TreeOperation.cpp
+++ b/parser/html/nsHtml5TreeOperation.cpp
@@ -574,30 +574,27 @@ nsHtml5TreeOperation::CreateMathMLElemen
}
return newContent;
}
void
nsHtml5TreeOperation::SetFormElement(nsIContent* aNode, nsIContent* aParent)
{
nsCOMPtr<nsIFormControl> formControl(do_QueryInterface(aNode));
- nsCOMPtr<nsIDOMHTMLImageElement> domImageElement = do_QueryInterface(aNode);
+ RefPtr<dom::HTMLImageElement> domImageElement = dom::HTMLImageElement::FromContentOrNull(aNode);
// NS_ASSERTION(formControl, "Form-associated element did not implement nsIFormControl.");
// TODO: uncomment the above line when <keygen> (bug 101019) is supported by Gecko
nsCOMPtr<nsIDOMHTMLFormElement> formElement(do_QueryInterface(aParent));
NS_ASSERTION(formElement, "The form element doesn't implement nsIDOMHTMLFormElement.");
// avoid crashing on <keygen>
if (formControl &&
!aNode->HasAttr(kNameSpaceID_None, nsGkAtoms::form)) {
formControl->SetForm(formElement);
} else if (domImageElement) {
- RefPtr<dom::HTMLImageElement> imageElement =
- static_cast<dom::HTMLImageElement*>(domImageElement.get());
- MOZ_ASSERT(imageElement);
- imageElement->SetForm(formElement);
+ domImageElement->SetForm(formElement);
}
}
nsresult
nsHtml5TreeOperation::FosterParentText(nsIContent* aStackParent,
char16_t* aBuffer,
uint32_t aLength,
nsIContent* aTable,
--- 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 "nsIDOMHTMLCollection.h"
#include "nsIDOMHTMLDocument.h"
#include "nsIDOMHTMLElement.h"
#include "nsIDOMHTMLFormElement.h"
#include "nsIDOMHTMLHtmlElement.h"
-#include "nsIDOMHTMLImageElement.h"
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLMediaElement.h"
#include "nsIDOMHTMLMenuItemElement.h"
#include "nsIDOMHTMLOptionElement.h"
#include "nsIDOMHTMLOptionsCollection.h"
#include "nsIDOMHTMLScriptElement.h"
#include "nsIDOMHTMLSelectElement.h"
#include "nsIDOMHTMLSourceElement.h"
@@ -152,17 +151,16 @@
#include "mozilla/dom/HTMLBaseElementBinding.h"
#include "mozilla/dom/HTMLButtonElementBinding.h"
#include "mozilla/dom/HTMLCollectionBinding.h"
#include "mozilla/dom/HTMLDocumentBinding.h"
#include "mozilla/dom/HTMLElementBinding.h"
#include "mozilla/dom/HTMLFormElementBinding.h"
#include "mozilla/dom/HTMLFrameSetElementBinding.h"
#include "mozilla/dom/HTMLHtmlElementBinding.h"
-#include "mozilla/dom/HTMLImageElementBinding.h"
#include "mozilla/dom/HTMLInputElementBinding.h"
#include "mozilla/dom/HTMLMediaElementBinding.h"
#include "mozilla/dom/HTMLMenuItemElementBinding.h"
#include "mozilla/dom/HTMLObjectElementBinding.h"
#include "mozilla/dom/HTMLOptionElementBinding.h"
#include "mozilla/dom/HTMLOptionsCollectionBinding.h"
#include "mozilla/dom/HTMLScriptElementBinding.h"
#include "mozilla/dom/HTMLSelectElementBinding.h"
@@ -311,17 +309,16 @@ const ComponentsInterfaceShimEntry kComp
DEFINE_SHIM_WITH_CUSTOM_INTERFACE(nsIDOMGeoPositionError, PositionError),
DEFINE_SHIM(History),
DEFINE_SHIM(HTMLBaseElement),
DEFINE_SHIM(HTMLCollection),
DEFINE_SHIM(HTMLDocument),
DEFINE_SHIM(HTMLElement),
DEFINE_SHIM(HTMLFormElement),
DEFINE_SHIM(HTMLHtmlElement),
- DEFINE_SHIM(HTMLImageElement),
DEFINE_SHIM(HTMLInputElement),
DEFINE_SHIM(HTMLMediaElement),
DEFINE_SHIM(HTMLMenuItemElement),
DEFINE_SHIM(HTMLOptionElement),
DEFINE_SHIM(HTMLOptionsCollection),
DEFINE_SHIM(HTMLScriptElement),
DEFINE_SHIM(HTMLSelectElement),
DEFINE_SHIM(HTMLSourceElement),