mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-02 05:17:31 +09:00
parent
1803a30a06
commit
900df90dae
12 changed files with 182 additions and 4 deletions
|
|
@ -421,7 +421,7 @@
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// HTML:dialog
|
// HTML:dialog
|
||||||
|
|
||||||
todo(isAccessible("dialog"), "dialog element is not accessible");
|
ok(isAccessible("dialog"), "dialog element is not accessible");
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// HTML:div
|
// HTML:div
|
||||||
|
|
|
||||||
65
dom/html/HTMLDialogElement.cpp
Normal file
65
dom/html/HTMLDialogElement.cpp
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
/* -*- 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/dom/HTMLDialogElement.h"
|
||||||
|
#include "mozilla/dom/HTMLDialogElementBinding.h"
|
||||||
|
|
||||||
|
NS_IMPL_NS_NEW_HTML_ELEMENT(Dialog)
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace dom {
|
||||||
|
|
||||||
|
HTMLDialogElement::~HTMLDialogElement()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMPL_ELEMENT_CLONE(HTMLDialogElement)
|
||||||
|
|
||||||
|
void
|
||||||
|
HTMLDialogElement::Close(const mozilla::dom::Optional<nsAString>& aReturnValue)
|
||||||
|
{
|
||||||
|
if (!Open()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (aReturnValue.WasPassed()) {
|
||||||
|
SetReturnValue(aReturnValue.Value());
|
||||||
|
}
|
||||||
|
ErrorResult ignored;
|
||||||
|
SetOpen(false, ignored);
|
||||||
|
ignored.SuppressException();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HTMLDialogElement::Show()
|
||||||
|
{
|
||||||
|
if (Open()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ErrorResult ignored;
|
||||||
|
SetOpen(true, ignored);
|
||||||
|
ignored.SuppressException();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
HTMLDialogElement::ShowModal(ErrorResult& aError)
|
||||||
|
{
|
||||||
|
if (!IsInComposedDoc() || Open()) {
|
||||||
|
aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
SetOpen(true, aError);
|
||||||
|
aError.SuppressException();
|
||||||
|
}
|
||||||
|
|
||||||
|
JSObject*
|
||||||
|
HTMLDialogElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
|
||||||
|
{
|
||||||
|
return HTMLDialogElementBinding::Wrap(aCx, this, aGivenProto);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace dom
|
||||||
|
} // namespace mozilla
|
||||||
58
dom/html/HTMLDialogElement.h
Normal file
58
dom/html/HTMLDialogElement.h
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
/* -*- 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 HTMLDialogElement_h
|
||||||
|
#define HTMLDialogElement_h
|
||||||
|
|
||||||
|
#include "mozilla/Attributes.h"
|
||||||
|
#include "nsGenericHTMLElement.h"
|
||||||
|
#include "nsGkAtoms.h"
|
||||||
|
|
||||||
|
namespace mozilla {
|
||||||
|
namespace dom {
|
||||||
|
|
||||||
|
class HTMLDialogElement final : public nsGenericHTMLElement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit HTMLDialogElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo) : nsGenericHTMLElement(aNodeInfo)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLDialogElement, dialog)
|
||||||
|
|
||||||
|
virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override;
|
||||||
|
|
||||||
|
bool Open() const { return GetBoolAttr(nsGkAtoms::open); }
|
||||||
|
void SetOpen(bool aOpen, ErrorResult& aError)
|
||||||
|
{
|
||||||
|
SetHTMLBoolAttr(nsGkAtoms::open, aOpen, aError);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GetReturnValue(nsAString& aReturnValue)
|
||||||
|
{
|
||||||
|
aReturnValue = mReturnValue;
|
||||||
|
}
|
||||||
|
void SetReturnValue(const nsAString& aReturnValue)
|
||||||
|
{
|
||||||
|
mReturnValue = aReturnValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Close(const mozilla::dom::Optional<nsAString>& aReturnValue);
|
||||||
|
void Show();
|
||||||
|
void ShowModal(ErrorResult& aError);
|
||||||
|
|
||||||
|
nsString mReturnValue;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual ~HTMLDialogElement();
|
||||||
|
JSObject* WrapNode(JSContext* aCx,
|
||||||
|
JS::Handle<JSObject*> aGivenProto) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace dom
|
||||||
|
} // namespace mozilla
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
@ -56,6 +56,7 @@ EXPORTS.mozilla.dom += [
|
||||||
'HTMLDataElement.h',
|
'HTMLDataElement.h',
|
||||||
'HTMLDataListElement.h',
|
'HTMLDataListElement.h',
|
||||||
'HTMLDetailsElement.h',
|
'HTMLDetailsElement.h',
|
||||||
|
'HTMLDialogElement.h',
|
||||||
'HTMLDivElement.h',
|
'HTMLDivElement.h',
|
||||||
'HTMLFieldSetElement.h',
|
'HTMLFieldSetElement.h',
|
||||||
'HTMLFontElement.h',
|
'HTMLFontElement.h',
|
||||||
|
|
@ -134,6 +135,7 @@ UNIFIED_SOURCES += [
|
||||||
'HTMLDataElement.cpp',
|
'HTMLDataElement.cpp',
|
||||||
'HTMLDataListElement.cpp',
|
'HTMLDataListElement.cpp',
|
||||||
'HTMLDetailsElement.cpp',
|
'HTMLDetailsElement.cpp',
|
||||||
|
'HTMLDialogElement.cpp',
|
||||||
'HTMLDivElement.cpp',
|
'HTMLDivElement.cpp',
|
||||||
'HTMLElement.cpp',
|
'HTMLElement.cpp',
|
||||||
'HTMLFieldSetElement.cpp',
|
'HTMLFieldSetElement.cpp',
|
||||||
|
|
|
||||||
|
|
@ -1654,6 +1654,7 @@ NS_DECLARE_NS_NEW_HTML_ELEMENT(Mod)
|
||||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Data)
|
NS_DECLARE_NS_NEW_HTML_ELEMENT(Data)
|
||||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(DataList)
|
NS_DECLARE_NS_NEW_HTML_ELEMENT(DataList)
|
||||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Details)
|
NS_DECLARE_NS_NEW_HTML_ELEMENT(Details)
|
||||||
|
NS_DECLARE_NS_NEW_HTML_ELEMENT(Dialog)
|
||||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Div)
|
NS_DECLARE_NS_NEW_HTML_ELEMENT(Div)
|
||||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(FieldSet)
|
NS_DECLARE_NS_NEW_HTML_ELEMENT(FieldSet)
|
||||||
NS_DECLARE_NS_NEW_HTML_ELEMENT(Font)
|
NS_DECLARE_NS_NEW_HTML_ELEMENT(Font)
|
||||||
|
|
|
||||||
|
|
@ -442,6 +442,8 @@ var interfaceNamesInGlobalScope =
|
||||||
"HTMLDataListElement",
|
"HTMLDataListElement",
|
||||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||||
"HTMLDetailsElement",
|
"HTMLDetailsElement",
|
||||||
|
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||||
|
"HTMLDialogElement",
|
||||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||||
"HTMLDirectoryElement",
|
"HTMLDirectoryElement",
|
||||||
// IMPORTANT: Do not change this list without review from a DOM peer!
|
// IMPORTANT: Do not change this list without review from a DOM peer!
|
||||||
|
|
|
||||||
22
dom/webidl/HTMLDialogElement.webidl
Normal file
22
dom/webidl/HTMLDialogElement.webidl
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
/* -*- 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
|
||||||
|
* https://html.spec.whatwg.org/multipage/forms.html#the-dialog-element
|
||||||
|
*
|
||||||
|
* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and
|
||||||
|
* Opera Software ASA. You are granted a license to use, reproduce
|
||||||
|
* and create derivative works of this document.
|
||||||
|
*/
|
||||||
|
|
||||||
|
interface HTMLDialogElement : HTMLElement {
|
||||||
|
[SetterThrows] attribute boolean open;
|
||||||
|
attribute DOMString returnValue;
|
||||||
|
|
||||||
|
void show();
|
||||||
|
[Throws] void showModal();
|
||||||
|
|
||||||
|
void close(optional DOMString returnValue);
|
||||||
|
};
|
||||||
|
|
@ -184,6 +184,7 @@ WEBIDL_FILES = [
|
||||||
'HTMLDataElement.webidl',
|
'HTMLDataElement.webidl',
|
||||||
'HTMLDataListElement.webidl',
|
'HTMLDataListElement.webidl',
|
||||||
'HTMLDetailsElement.webidl',
|
'HTMLDetailsElement.webidl',
|
||||||
|
'HTMLDialogElement.webidl',
|
||||||
'HTMLDirectoryElement.webidl',
|
'HTMLDirectoryElement.webidl',
|
||||||
'HTMLDivElement.webidl',
|
'HTMLDivElement.webidl',
|
||||||
'HTMLDListElement.webidl',
|
'HTMLDListElement.webidl',
|
||||||
|
|
|
||||||
|
|
@ -517,9 +517,9 @@ HTMLEditUtils::SupportsAlignAttr(nsIDOMNode* aNode)
|
||||||
#define GROUP_FORMCONTROL (1 << 6)
|
#define GROUP_FORMCONTROL (1 << 6)
|
||||||
|
|
||||||
// address, applet, article, aside, blockquote, button, center, del, details,
|
// address, applet, article, aside, blockquote, button, center, del, details,
|
||||||
// dir, div, dl, fieldset, figure, footer, form, h1, h2, h3, h4, h5, h6, header,
|
// dialog, dir, div, dl, fieldset, figure, footer, form, h1, h2, h3, h4, h5,
|
||||||
// hgroup, hr, iframe, ins, main, map, menu, nav, noframes, noscript, object,
|
// h6, header, hgroup, hr, iframe, ins, main, map, menu, nav, noframes,
|
||||||
// ol, p, pre, table, section, summary, ul
|
// noscript, object, ol, p, pre, table, section, summary, ul
|
||||||
#define GROUP_BLOCK (1 << 7)
|
#define GROUP_BLOCK (1 << 7)
|
||||||
|
|
||||||
// frame, frameset
|
// frame, frameset
|
||||||
|
|
@ -638,6 +638,7 @@ static const ElementInfo kElements[eHTMLTag_userdefined] = {
|
||||||
ELEM(del, true, true, GROUP_PHRASE | GROUP_BLOCK, GROUP_FLOW_ELEMENT),
|
ELEM(del, true, true, GROUP_PHRASE | GROUP_BLOCK, GROUP_FLOW_ELEMENT),
|
||||||
ELEM(details, true, true, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
|
ELEM(details, true, true, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
|
||||||
ELEM(dfn, true, true, GROUP_PHRASE, GROUP_INLINE_ELEMENT),
|
ELEM(dfn, true, true, GROUP_PHRASE, GROUP_INLINE_ELEMENT),
|
||||||
|
ELEM(dialog, true, true, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
|
||||||
ELEM(dir, true, false, GROUP_BLOCK, GROUP_LI),
|
ELEM(dir, true, false, GROUP_BLOCK, GROUP_LI),
|
||||||
ELEM(div, true, true, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
|
ELEM(div, true, true, GROUP_BLOCK, GROUP_FLOW_ELEMENT),
|
||||||
ELEM(dl, true, false, GROUP_BLOCK, GROUP_DL_CONTENT),
|
ELEM(dl, true, false, GROUP_BLOCK, GROUP_DL_CONTENT),
|
||||||
|
|
|
||||||
|
|
@ -799,6 +799,27 @@ input[type="date"] > xul|datetimebox {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* <dialog> element styles */
|
||||||
|
|
||||||
|
dialog {
|
||||||
|
position: absolute;
|
||||||
|
offset-inline-start: 0;
|
||||||
|
offset-inline-end: 0;
|
||||||
|
color: black;
|
||||||
|
margin: auto;
|
||||||
|
border-width: initial;
|
||||||
|
border-style: solid;
|
||||||
|
border-color: initial;
|
||||||
|
border-image: initial;
|
||||||
|
padding: 1em;
|
||||||
|
background: white;
|
||||||
|
width: -moz-fit-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
dialog:not([open]) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* emulation of non-standard HTML <marquee> tag */
|
/* emulation of non-standard HTML <marquee> tag */
|
||||||
marquee {
|
marquee {
|
||||||
inline-size: -moz-available;
|
inline-size: -moz-available;
|
||||||
|
|
|
||||||
|
|
@ -151,6 +151,10 @@ const nsHTMLElement gHTMLElements[] = {
|
||||||
/*tag*/ eHTMLTag_dfn,
|
/*tag*/ eHTMLTag_dfn,
|
||||||
/*parent,leaf*/ kPhrase, false
|
/*parent,leaf*/ kPhrase, false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/*tag*/ eHTMLTag_dialog,
|
||||||
|
/*parent,leaf*/ kBlock, false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
/*tag*/ eHTMLTag_dir,
|
/*tag*/ eHTMLTag_dir,
|
||||||
/*parent,leaf*/ kList, false
|
/*parent,leaf*/ kList, false
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,7 @@ HTML_HTMLELEMENT_TAG(dd)
|
||||||
HTML_TAG(del, Mod)
|
HTML_TAG(del, Mod)
|
||||||
HTML_TAG(details, Details)
|
HTML_TAG(details, Details)
|
||||||
HTML_HTMLELEMENT_TAG(dfn)
|
HTML_HTMLELEMENT_TAG(dfn)
|
||||||
|
HTML_TAG(dialog, Dialog)
|
||||||
HTML_TAG(dir, Shared)
|
HTML_TAG(dir, Shared)
|
||||||
HTML_TAG(div, Div)
|
HTML_TAG(div, Div)
|
||||||
HTML_TAG(dl, SharedList)
|
HTML_TAG(dl, SharedList)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue