Граф коммитов

9567 Коммитов

Автор SHA1 Сообщение Дата
Emilio Cobos Álvarez 6d8c0d26b1 Bug 1582398 - Remove user-select: all for editable labels. r=masayuki
This seems to go back to our initial contenteditable implementation, and I don't
think there's a reason <label> should work differently from anything else.

Differential Revision: https://phabricator.services.mozilla.com/D46929

--HG--
extra : moz-landing-system : lando
2019-10-23 09:30:03 +00:00
Mirko Brodesser e1b9454134 Bug 1587716: change `RangeBoundaryBase`'s offset argument to `uint32_t`. r=smaug
`uint32_t`, because `nsRange::ComparePoints` requires it -- by webidl
interface -- to be unsigned long.

Moreover it makes `RangeBoundaryBase`'s interface cleaner, because it
already exposes the offset as a `uint32_t`.

Differential Revision: https://phabricator.services.mozilla.com/D50054

--HG--
extra : moz-landing-system : lando
2019-10-23 08:22:36 +00:00
Mats Palmgren 6aadfc8aaf Bug 1587141 part 2 - Make execCommand("indent") ignore whitespace when looking for sibling list element. r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D48587

--HG--
extra : moz-landing-system : lando
2019-10-14 17:11:00 +00:00
Mats Palmgren c506e40d11 Bug 1587141 part 1 - Share some common code between Handle[CSS|HTML]IndentAtSelectionInternal (idempotent patch). r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D48586

--HG--
extra : moz-landing-system : lando
2019-10-15 04:36:26 +00:00
Geoff Brown 32490358c2 Bug 1585119 - Re-enable many more mochitests on Android; r=geckoview-reviewers,snorp
Most of these tests have been disabled for a long time; they run well
in the current test environment.
I intend to enable still more mochitests in a future patch.

Differential Revision: https://phabricator.services.mozilla.com/D49524

--HG--
extra : moz-landing-system : lando
2019-10-18 14:35:20 +00:00
Valentin Gosu 8a48b05801 Bug 1413203 - The css for about:networking is not loading in Android r=Gijs
* Make about:networking work on mobile
* I used the aboutMemory.css file as a guide for doing this
* The mobile CSS does not include the common.css, since that doesn't seem to work. But at least now the interfaces is functional. We should make it look nice in a follow-up.

Differential Revision: https://phabricator.services.mozilla.com/D49582

--HG--
extra : moz-landing-system : lando
2019-10-18 12:01:56 +00:00
Masayuki Nakano abdf9727f5 Bug 1582215 - Make `HTMLEditor::DoInsertHTMLWithContext()` compute new insertion point before removing unnecessary `<li>` elements r=m_kato
When inserting `<li>` elements into `<ul>`, `<ol>` or `<li>` element,
`HTMLEditor::DoInsertHTMLWithContext()` removes unnecessary empty `<li>`
elements at insertion point.  At this time, we've computed next insertion
point with removed `<li>` element.  Therefore, insertion point goes out
from the DOM tree.  This patch makes it compute new insertion point before
removing each empty `<li>` element.

Additionally, this patch adds some WPT data for testing this case.  I verified
that Chrome passes the new tests too.

Differential Revision: https://phabricator.services.mozilla.com/D49394

--HG--
extra : moz-landing-system : lando
2019-10-17 09:17:14 +00:00
Geoff Brown c906073cd5 Bug 1585119 - Re-enable many mochitests on android; r=geckoview-reviewers,snorp
Most of these tests have been disabled for a long time; they run well
in the current test environment.
With the additional tests running, task times increase; I have added one
more test chunk for android mochitest-plain.
These tests were identified from a random sampling of mochitest manifests;
I intend to enable more mochitests in future patches.

Differential Revision: https://phabricator.services.mozilla.com/D48912

--HG--
extra : moz-landing-system : lando
2019-10-15 15:07:09 +00:00
Mirko Brodesser b761e516f6 Bug 1587746: remove `RangeBoundaryBase::Set` and use constructor instead. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D48826

--HG--
extra : moz-landing-system : lando
2019-10-11 12:43:57 +00:00
Masayuki Nakano ac74e89b26 Bug 1566795 - part 6: Make `HTMLEditor::RemoveInlinePropertyInternal()` remove text node style which comes from block parent r=m_kato
Finally, `Document.execCommand()` still does not work fine if selection
starts from very start of block and/or end at very end of block because
`PromoteInlineRange()` extends selection range to contain the
containers, then, `SubtreeContentIterator` won't list up text nodes.

In this case, `RemoveInlinePropertyInternal()` expects that
`RemoveStyleInside()` removes text node style with creating
`<span>` elements.  However, `RemoveStyleInsilde()` only handles
`Element`s and it handles elements from most-descendants.
Therefore, it cannot distinguish whether text node style comes
from removing inline elements or parent block.

This patch makes `RemoveInlinePropertyInternal()` collect
descendant text nodes in the range after handling all nodes in
the range except descendant text nodes, then, check the
final style of descendant text nodes, finally, remove the style
if coming from parent block.

Differential Revision: https://phabricator.services.mozilla.com/D47865

--HG--
extra : moz-landing-system : lando
2019-10-09 08:04:34 +00:00
Makoto Kato aecde3cc69 Bug 1587312 - Fix typo of finding non-anonymous content. r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D48640

--HG--
extra : moz-landing-system : lando
2019-10-09 05:42:42 +00:00
Masayuki Nakano 92ead719bd Bug 1566795 - part 5: Make the for loop of `HTMLEditor::RemoveInlinePropertyInternal()` partially selected text nodes r=m_kato
If selection range is not in **one** text node, `RemoveInlinePropertyInternal()`
collects target nodes with `SubtreeContentIterator`.  It only collects topmost
nodes which are **entirely** contained in the range (it's enough because their
descendants will be handled by `RemoveStyleInside()` recursively).

The reasons why it uses `SubtreeContentIterator` rather than
`PreContentIterator` must be:
1. Performance reason.
2. Assuming there are no multiple text nodes.
3. Not expects that user removes text node styles come from parent block.

The reason 2 is wrong because when removing a style, all browsers don't
join text nodes which was in removing element with adjacent text nodes.
(I.e., we cannot change this behavior for compatibility.)

The reason 3 is of course wrong we're struggling with this scenario.

Therefore, `RemoveInlinePropertyInternal()` needs to collect partially
selected text nodes by itself (if there are).  Then, we can merge the
single text node selected case with the `for` loop.

Differential Revision: https://phabricator.services.mozilla.com/D47864

--HG--
extra : moz-landing-system : lando
2019-10-08 09:24:47 +00:00
Masayuki Nakano bb14f09ee9 Bug 1566795 - part 4: Make `HTMLEditor` not check `IsCSSEnabled()` at removing inline style r=m_kato
For compatibility with Chrome, when removing inline style at block parent,
we should reset the style with creating `<span>` element whose `style`
attribute removes the style.  We do this only in CSS mode, but we should do
it in HTML mode too.

This patch also makes `FontFaceStateCommand::SetState()` ignore `tt` value
if its root caller is `Document::ExecCommand()`.  It was implemented for
composer to handle XUL command in bug 115922.  Therefore, we should not do
this special handling on the web.  If it were possible to separate this
change to another bug, it'd be nicer.  But without this change, we'll have
a lot of regressions of `Document.execCommand("fontname")`.  Therefore,
this is also fixed in this patch.

Note that this removes first `.ini` file selection because
the tests cannot be run without test number range parameter.
So, the sections are not used anymore.

Differential Revision: https://phabricator.services.mozilla.com/D47862

--HG--
extra : moz-landing-system : lando
2019-10-08 09:24:19 +00:00
Razvan Maries a6b9e7fdbc Backed out changeset 90695432b21e (bug 1566795)for build bustages on HTMLStyleEditor.cpp. CLOSED TREE 2019-10-08 10:21:58 +03:00
Masayuki Nakano b1996e5052 Bug 1566795 - part 4: Make `HTMLEditor` not check `IsCSSEnabled()` at removing inline style r=m_kato
For compatibility with Chrome, when removing inline style at block parent,
we should reset the style with creating `<span>` element whose `style`
attribute removes the style.  We do this only in CSS mode, but we should do
it in HTML mode too.

This patch also makes `FontFaceStateCommand::SetState()` ignore `tt` value
if its root caller is `Document::ExecCommand()`.  It was implemented for
composer to handle XUL command in bug 115922.  Therefore, we should not do
this special handling on the web.  If it were possible to separate this
change to another bug, it'd be nicer.  But without this change, we'll have
a lot of regressions of `Document.execCommand("fontname")`.  Therefore,
this is also fixed in this patch.

Note that this removes first `.ini` file selection because
the tests cannot be run without test number range parameter.
So, the sections are not used anymore.

Differential Revision: https://phabricator.services.mozilla.com/D47862

--HG--
extra : moz-landing-system : lando
2019-10-07 05:31:19 +00:00
Masayuki Nakano 6a1791bc12 Bug 1566795 - part 3: Clean up `HTMLEditor::RemoveStyleInside()` r=m_kato
Surprisingly, its `aChildOnly` is never set to `true` and if it were set to
`true`, it does unnecessary recursive calls.  Therefore, we can make it
simpler.

Differential Revision: https://phabricator.services.mozilla.com/D47860

--HG--
extra : moz-landing-system : lando
2019-10-07 03:33:11 +00:00
Makoto Kato be2e7568aa Bug 1568996 - Flush layout before calling nsFrameSelection::MoveCaret. r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D47532

--HG--
extra : moz-landing-system : lando
2019-10-07 08:18:33 +00:00
Makoto Kato 1ab2eca2d2 Bug 1584901 - Convert tail space to NBSP in composition string. r=masayuki
This is related to bug 1530649. When using <span> element with contentedtiable,
we won't insert <br> element at last. When Korean IME on macOS commits
composition by space key, composition string has space.

Gekco removes U+0020 space when it is last character into editing host. To keep
whitespace, we have to replace with NBSP when it is last.

Differential Revision: https://phabricator.services.mozilla.com/D48146

--HG--
extra : moz-landing-system : lando
2019-10-07 08:16:18 +00:00
Masayuki Nakano 3cc02eccbf Bug 1566795 - part 2: Clean up `HTMLEditor::SplitAboveRange()` r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D47859

--HG--
extra : moz-landing-system : lando
2019-10-07 01:11:31 +00:00
Masayuki Nakano 470b292007 Bug 1566795 - part 1: Clean up `HTMLEditor::ClearStyle()`, `HTMLEditor::SplitStyleAbovePoint()` and their callers r=m_kato
Both method take a DOM point with `nsCOMPtr<nsINode>*` and `int32_t*`.
This makes each caller complicated.  Instead, we should use stack only class
to return both `EditorDOMPoint` and `nsresult`.  I name it `EditResult`.

Additionally, this fixes a bug of `HTMLeditor::SplitStyleAboveRange()`.  That
is not tracking new selection start point while it splits elements at end
of given range.  This is detected by the debug assertion in
`ToRawRangeBoundary()` (i.e., this fix is required to pass some tests).

Differential Revision: https://phabricator.services.mozilla.com/D47858

--HG--
extra : moz-landing-system : lando
2019-10-07 00:55:02 +00:00
Sylvestre Ledru f12b9fa5c3 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D47737

--HG--
extra : moz-landing-system : lando
2019-10-06 18:29:55 +00:00
Emma Malysz e4eba2b24f Bug 1586337, Replace XUL textbox with HTML input in testcases within editor directory r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D48100

--HG--
extra : moz-landing-system : lando
2019-10-04 16:30:10 +00:00
Tim Nguyen 91976e6a66 Bug 1586018 - Remove a11y tree tests, reftests and crashtests only related to textbox. r=surkov,emilio
Differential Revision: https://phabricator.services.mozilla.com/D48080

--HG--
extra : moz-landing-system : lando
2019-10-03 18:01:08 +00:00
Tim Nguyen 2ed60e9a99 Bug 1586019 - Remove textbox .plain class support. r=bgrins
Differential Revision: https://phabricator.services.mozilla.com/D48074

--HG--
extra : moz-landing-system : lando
2019-10-03 16:21:42 +00:00
Alexander Surkov e670b51391 Bug 1582590 - Clean up unused <textbox type='autocomplete'> platform code. r=NeilDeakin
Differential Revision: https://phabricator.services.mozilla.com/D46541

--HG--
extra : moz-landing-system : lando
2019-10-03 11:18:53 +00:00
Gabriele Svelto 10d41866a5 Bug 1585156 - Remove useless inclusions of nsIDOMWindow.h and nsIDOMWindowUtils.h r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D47678

--HG--
extra : moz-landing-system : lando
2019-09-30 22:06:47 +00:00
Geoff Brown d964f2d601 Bug 1584290 - Enable many reftests on Android; r=geckoview-reviewers,snorp
Most of these tests have been disabled for a long time; they run well
in the current test environment.

Differential Revision: https://phabricator.services.mozilla.com/D47616

--HG--
extra : moz-landing-system : lando
2019-09-30 16:34:16 +00:00
Christoph Kerschbaumer 7271448df4 Bug 1584282: Remove forgotten debug statement within test_bug629172.html from Bug 1497200. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D47307

--HG--
extra : moz-landing-system : lando
2019-09-26 16:48:43 +00:00
Jorg K 389a1827c2 Bug 1581774 - revert part of rev 5e2fad03c885 from bug 1507543 for Thunderbirds since it breaks the spellcheck. r=m_kato
--HG--
extra : rebase_source : 8dd6fdf15b48115691d21c476875a9bc5cd48591
2019-09-26 09:42:42 +02:00
Tim Nguyen b0d1ddb586 Bug 1581956 - Make search-textbox not use the <textbox> tag. r=surkov,MarcoZ
Differential Revision: https://phabricator.services.mozilla.com/D46219

--HG--
extra : moz-landing-system : lando
2019-09-25 19:12:48 +00:00
Christoph Kerschbaumer 53d5895e71 Bug 1497200: Apply Meta CSP to about:downloads. r=Gijs
Differential Revision: https://phabricator.services.mozilla.com/D45330

--HG--
extra : moz-landing-system : lando
2019-09-25 13:50:28 +00:00
Makoto Kato 2c7f1d861c Bug 1474978 - Add crashtest. r=masayuki
Differential Revision: https://phabricator.services.mozilla.com/D46756

--HG--
extra : moz-landing-system : lando
2019-09-23 10:37:40 +00:00
Mirko Brodesser a962446e79 Bug 1581523: part 4) Don't set `mWrapColumn` depending on `<body>`'s style. r=jorgk
Instead, rely on the proper initialization of `mWrapColumn` via
`nsPlainTextSerializer::Init`.

This will allow to move `mWrapColumn` to `nsPlainTextSerializer::Settings::mWrapColumn`,
simplifying reasoning about it.

Differential Revision: https://phabricator.services.mozilla.com/D46129

--HG--
extra : moz-landing-system : lando
2019-09-23 11:43:59 +00:00
Masayuki Nakano 5d03660aa8 Bug 1581206 - Reconvert browser_bug629172.js to mochitest r=Ehsan
Currently, we can use chrome process's shortcut key with
`EventUtils.synthesizeKey()` with enabling `"test.events.async.enabled"` pref.
So, we should reconvert it to a mochitest for making it more stable.

Oddly, when I try to run this test as test-verify on macOS, it permanently
fails rendering resizer of `<textarea>` elements immediately after creation.
Therefore, this patch disables this test in test-verify on macOS.

Differential Revision: https://phabricator.services.mozilla.com/D46578

--HG--
rename : editor/libeditor/tests/browser_bug629172.js => editor/libeditor/tests/test_bug629172.html
extra : moz-landing-system : lando
2019-09-20 14:56:47 +00:00
Masayuki Nakano 52da57f7a9 Bug 1581337 - Make `HTMLEditor::DeleteMostAncestorMailCiteElementIfEmpty()` do nothing if found mail-cite element is not empty r=m_kato
When rewriting `DeleteMostAncestorMailCiteElementIfEmpty()` with early-return
style, I forgot to make it do nothing when found element is empty:
https://searchfox.org/mozilla-central/rev/94e642e6036dc694b07cab895c9b5b267f0db065/editor/libeditor/HTMLEditRules.cpp#4078
This patch restores it.

Differential Revision: https://phabricator.services.mozilla.com/D46122

--HG--
extra : moz-landing-system : lando
2019-09-18 11:38:35 +00:00
Masayuki Nakano 58f9c64190 Bug 1581034 - part 2: Get rid of `TextEditUtils::IsBreak()` and `TextEditUtils` itself r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D45811

--HG--
extra : moz-landing-system : lando
2019-09-18 12:37:14 +00:00
Masayuki Nakano 4f5eae49b0 Bug 1581034 - part 1: Get rid of `TextEditUtils::IsBody()` r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D45810

--HG--
extra : moz-landing-system : lando
2019-09-18 10:29:01 +00:00
Masayuki Nakano 9973ff7319 Bug 1540029 - part 11: Get rid of `AutoEditInitRulesTrigger` r=m_kato
Only for solving the order of `AutoEditInitRulesTrigger` destruction when
`HTMLEditor::Init()` calls `TextEditor::Init()`, `TextEditor` has unnecessary
counter and the initialization code is made harder to understand.

Therefore, this patch makes `TextEditor::Init()` and `HTMLEditor::Init()`
directly call `InitEditorContentAndSelection()` at appropriate time.
Additionally, `HTMLEditor::Init()` can call `EditorBase::Init()` instead of
`TextEditor::Init()` since `TextEditor::Init()` does nothing for `HTMLEditor`
actually.

Differential Revision: https://phabricator.services.mozilla.com/D45793

--HG--
extra : moz-landing-system : lando
2019-09-18 10:14:40 +00:00
Masayuki Nakano 6789366d5e Bug 1540029 - part 10: Get rid of `TextEditRules` and `HTMLEditRules` r=m_kato
Now, we can get rid of `TextEditRules` and `HTMLEditRules` completely.
And also this patch renames their cpp files to `TextEditSubActionHandler`
and `HTMLEditSubActionHandler`.

`TextEditor::Init()` and `HTMLEditor::Init()` are still complicated due to
`AutoEditInitRulesTrigger`.  The following patch will remove it.

Differential Revision: https://phabricator.services.mozilla.com/D45792

--HG--
rename : editor/libeditor/HTMLEditRules.cpp => editor/libeditor/HTMLEditSubActionHandler.cpp
rename : editor/libeditor/TextEditRules.cpp => editor/libeditor/TextEditSubActionHandler.cpp
extra : moz-landing-system : lando
2019-09-18 08:40:08 +00:00
Masayuki Nakano d2ae4d5d88 Bug 1540029 - part 9: Move `TextEditRules::Init()` and `HTMLEditRules::Init()` to `TextEditor` and `HTMLEditor` r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D45791

--HG--
extra : moz-landing-system : lando
2019-09-18 08:21:37 +00:00
Masayuki Nakano 8b7e7ba3d1 Bug 1540029 - part 8: Replace `HTMLEditRules::GetParagraphState()` with new stack only class r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D45790

--HG--
extra : moz-landing-system : lando
2019-09-18 08:20:29 +00:00
Masayuki Nakano ed4c1cd65a Bug 1540029 - part 7: Replace `HTMLEditRules::GetAlignment()` with new stack only class r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D45789

--HG--
extra : moz-landing-system : lando
2019-09-18 06:26:56 +00:00
Masayuki Nakano 6ff81fdbe4 Bug 1540029 - part 6: Replace `HTMLEditRules::GetListItemState()` with new stack only class r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D45788

--HG--
extra : moz-landing-system : lando
2019-09-18 04:42:55 +00:00
Masayuki Nakano 320d1209c9 Bug 1540029 - part 5: Replace `HTMLEditRules::GetListState()` with new stack class r=m_kato
It takes a lot of `bool` out arguments.  Therefore, we should make it a
stack only class and caller should retrieve only necessary information.

Differential Revision: https://phabricator.services.mozilla.com/D45787

--HG--
extra : moz-landing-system : lando
2019-09-18 03:39:00 +00:00
Masayuki Nakano b3115e6972 Bug 1540029 - part 4: Merge `BeforeEdit()` and `OnStartToHandleTopLevelEditSubAction()`, and `AfterEdit()` and `OnEndHandlingTopLevelEditSubAction()` r=m_kato
And also this patch make each `AutoEditSubActionNotifier` creator check
the result of `OnStartToHandleTopLevelEditSubAction()` at least for
`NS_ERROR_EDITOR_DESTROYED`.

We need to take care of its destructor's result later, though.

Differential Revision: https://phabricator.services.mozilla.com/D45786

--HG--
extra : moz-landing-system : lando
2019-09-18 03:01:28 +00:00
Makoto Kato c147a2e204 Bug 1571375 - Don't remove white space when committing composition. r=masayuki
This is regression by bug 1530649.

After landing bug 1530649, we try to scan end point of replacement text. But
in this bug's situation, afterRun becomes same as current ws run by landing
bug 1530649. To get white space type of next of replacement end, we have to
scan around end point again.

Differential Revision: https://phabricator.services.mozilla.com/D45947

--HG--
extra : moz-landing-system : lando
2019-09-18 03:56:25 +00:00
Masayuki Nakano 59ca43a5a6 Bug 1540029 - part 3: Move `HTMLEditRules::DocumentModified()` to `HTMLEditor` r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D45785

--HG--
extra : moz-landing-system : lando
2019-09-17 07:22:01 +00:00
Masayuki Nakano db32271cec Bug 1540029 - part 2: Get rid of `TextEditRules::DocumentIsEmpty()` and `HTMLEditRules::DocumentIsEmpty()` r=m_kato
`TextEditRules::DocumentIsEmpty()` is a wrapper of `TextEditor::IsEmpty()` so
that we can get rid of it simply.

`HTMLEditRules::DocumentIsEmpty()` needs to change.  It's oddly checks only
`EditorBase::mPaddingBRElementForEmptyEditor` is `nullptr` or not.  However,
the editor may be completely empty.  And the result may be different from
`TextEditor::IsEmpty()` which is not overridden by `HTMLEditor`.  For partially
solving this issue, this patch makes `HTMLEditor` overrides `IsEmpty()` and
optimizes `TextEditor::IsEmpty()`.

With this change, the caller of `HTMLEditRules::DocumentIsEmpty()` may behave
differently in the only caller, `HTMLEditor::SelectEntireDocument()`.  And
unfortunately, its root called from `SelectAllCommand::DoCommand()`.  However,
it does just collapse `Selection` into the root element (`<body>` or
`Document.documentElement`) if it returns `true`.  Therefore, this change
must be safe since anyway `SelectionRefPtr()->SelectAllChildren()` with
the root element is exactly same as `SelectionRefPtr()->Collapse()` with
the empty root element if it's truly empty.

Differential Revision: https://phabricator.services.mozilla.com/D45784

--HG--
extra : moz-landing-system : lando
2019-09-17 06:58:06 +00:00
Masayuki Nakano 9ee5b3bbef Bug 1540029 - part 1: Move old edit action listener methods of `HTMLEditRules` to `EditorBase::TopLevelEditSubActionData` r=m_kato
The main purpose of them is modifying
`TopLevelEditSubActionData::mChangedRange`.  Therefore, they should be in the
struct.

Differential Revision: https://phabricator.services.mozilla.com/D45783

--HG--
extra : moz-landing-system : lando
2019-09-17 04:27:59 +00:00
Masayuki Nakano bbcb8b3a63 Bug 1574852 - part 113: Move `TextEditRules::CreateTrailingBRIfNeeded()` and `TextEditRules::CollapseSelectionToTrailingBRIfNeeded()` to `TextEditor` r=m_kato
Differential Revision: https://phabricator.services.mozilla.com/D45496

--HG--
extra : moz-landing-system : lando
2019-09-17 02:47:49 +00:00