mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
e4e2da55c9
The bulk of this commit was generated with a script, executed at the top level of a typical source code checkout. The only non-machine-generated part was modifying MFBT's moz.build to reflect the new naming. CLOSED TREE makes big refactorings like this a piece of cake. # The main substitution. find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \ xargs perl -p -i -e ' s/nsRefPtr\.h/RefPtr\.h/g; # handle includes s/nsRefPtr ?</RefPtr</g; # handle declarations and variables ' # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h. perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h # Handle nsRefPtr.h itself, a couple places that define constructors # from nsRefPtr, and code generators specially. We do this here, rather # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename # things like nsRefPtrHashtable. perl -p -i -e 's/nsRefPtr/RefPtr/g' \ mfbt/nsRefPtr.h \ xpcom/glue/nsCOMPtr.h \ xpcom/base/OwningNonNull.h \ ipc/ipdl/ipdl/lower.py \ ipc/ipdl/ipdl/builtin.py \ dom/bindings/Codegen.py \ python/lldbutils/lldbutils/utils.py # In our indiscriminate substitution above, we renamed # nsRefPtrGetterAddRefs, the class behind getter_AddRefs. Fix that up. find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \ xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g' if [ -d .git ]; then git mv mfbt/nsRefPtr.h mfbt/RefPtr.h else hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h fi
152 lines
4.5 KiB
C++
152 lines
4.5 KiB
C++
/* -*- 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 "mozilla/AsyncEventDispatcher.h"
|
|
#include "mozilla/dom/HTMLMetaElement.h"
|
|
#include "mozilla/dom/HTMLMetaElementBinding.h"
|
|
#include "nsContentUtils.h"
|
|
#include "nsStyleConsts.h"
|
|
|
|
NS_IMPL_NS_NEW_HTML_ELEMENT(Meta)
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
HTMLMetaElement::HTMLMetaElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
|
|
: nsGenericHTMLElement(aNodeInfo)
|
|
{
|
|
}
|
|
|
|
HTMLMetaElement::~HTMLMetaElement()
|
|
{
|
|
}
|
|
|
|
|
|
NS_IMPL_ISUPPORTS_INHERITED(HTMLMetaElement, nsGenericHTMLElement,
|
|
nsIDOMHTMLMetaElement)
|
|
|
|
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;
|
|
nsresult rv = GetContent(content);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
Element* headElt = aDocument->GetHeadElement();
|
|
if (headElt && nsContentUtils::ContentIsDescendantOf(this, headElt)) {
|
|
content = nsContentUtils::TrimWhitespace<nsContentUtils::IsHTMLWhitespace>(content);
|
|
aDocument->SetHeaderData(nsGkAtoms::referrer, content);
|
|
}
|
|
return NS_OK;
|
|
}
|
|
|
|
nsresult
|
|
HTMLMetaElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
|
|
const nsAttrValue* aValue, bool aNotify)
|
|
{
|
|
if (aNameSpaceID == kNameSpaceID_None) {
|
|
nsIDocument *document = GetUncomposedDoc();
|
|
if (aName == nsGkAtoms::content) {
|
|
if (document && AttrValueIs(kNameSpaceID_None, nsGkAtoms::name,
|
|
nsGkAtoms::viewport, eIgnoreCase)) {
|
|
nsAutoString content;
|
|
nsresult rv = GetContent(content);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
nsContentUtils::ProcessViewportInfo(document, content);
|
|
}
|
|
CreateAndDispatchEvent(document, NS_LITERAL_STRING("DOMMetaChanged"));
|
|
}
|
|
// Update referrer policy when it got changed from JS
|
|
nsresult rv = SetMetaReferrer(document);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
}
|
|
|
|
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
|
aNotify);
|
|
}
|
|
|
|
nsresult
|
|
HTMLMetaElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
|
|
nsIContent* aBindingParent,
|
|
bool aCompileEventHandlers)
|
|
{
|
|
nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent,
|
|
aBindingParent,
|
|
aCompileEventHandlers);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
if (aDocument &&
|
|
AttrValueIs(kNameSpaceID_None, nsGkAtoms::name, nsGkAtoms::viewport, eIgnoreCase)) {
|
|
nsAutoString content;
|
|
rv = GetContent(content);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
nsContentUtils::ProcessViewportInfo(aDocument, content);
|
|
}
|
|
// Referrer Policy spec requires a <meta name="referrer" tag to be in the
|
|
// <head> element.
|
|
rv = SetMetaReferrer(aDocument);
|
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
|
return rv;
|
|
}
|
|
CreateAndDispatchEvent(aDocument, NS_LITERAL_STRING("DOMMetaAdded"));
|
|
return rv;
|
|
}
|
|
|
|
void
|
|
HTMLMetaElement::UnbindFromTree(bool aDeep, bool aNullParent)
|
|
{
|
|
nsCOMPtr<nsIDocument> oldDoc = GetUncomposedDoc();
|
|
CreateAndDispatchEvent(oldDoc, NS_LITERAL_STRING("DOMMetaRemoved"));
|
|
nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
|
|
}
|
|
|
|
void
|
|
HTMLMetaElement::CreateAndDispatchEvent(nsIDocument* aDoc,
|
|
const nsAString& aEventName)
|
|
{
|
|
if (!aDoc)
|
|
return;
|
|
|
|
RefPtr<AsyncEventDispatcher> asyncDispatcher =
|
|
new AsyncEventDispatcher(this, aEventName, true, true);
|
|
asyncDispatcher->RunDOMEventWhenSafe();
|
|
}
|
|
|
|
JSObject*
|
|
HTMLMetaElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
|
{
|
|
return HTMLMetaElementBinding::Wrap(aCx, this, aGivenProto);
|
|
}
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|