Commit Graph

304 Commits

Author SHA1 Message Date
Ehsan Akhgari
ec4bc6f227 Bug 1504574 - Remove the XPCOM registration for nsDocumentEncoder; r=mccr8
Differential Revision: https://phabricator.services.mozilla.com/D10856
2018-11-05 23:16:04 -05:00
Masayuki Nakano
3e574a62cd Bug 1488337 - Rename mozilla::dom::SelectionChangeListener to mozilla::SelectionChangeEventDispatcher r=smaug
SelectionChangeListener is too generic name but it just dispatches
selectionchange event when it's necessary.  So, it should be renamed to
SelectionChangeEventDispatcher. Additionally, it's in mozilla::dom namespace
but it does not represent any DOM object. So, it should be in mozilla namespace
instead.

Differential Revision: https://phabricator.services.mozilla.com/D4913
2018-09-04 11:18:03 +00:00
Masayuki Nakano
1e60556001 Bug 1487659 - Make Selection treat SelectionChangeListener as a concrete class rather than nsISelectionListener r=smaug
SelectionChangeListener is an nsISelectionListener class.  This is added only
to Selection for "normal" and added by nsFrameSelection::Init() after
AccessibleCaretEventHub.  So, we can make Selection directly treat
SelectionChangeListener.

Differential Revision: https://phabricator.services.mozilla.com/D4757
2018-08-31 21:22:57 +00:00
Masayuki Nakano
8e0ecc58d3 Bug 1487591 - Make Selection treat AccessibleCaretEventHub as concrete class rather than nsISelectionListener r=smaug
AccessibleCaretEventHub is an nsISelectionListener of Selection whose type is
"normal".  This is added only when nsFrameSelection::Init() is called and
accessible caret is enabled.  Additionally, nsFrameSelection::Init() is
always called immediately after creating nsFrameSelection.

Therefore, when AccessibleCaretEventHub is installed to Selection, this is
always second selection listener and won't be installed multiple times.  So,
Selection can store pointer of AccessibleCaretEventHub directly only when
it's enabled and the Selection needs to notify it of selection change.

This patch makes Selection stores AccessibleCaretEventHub with RefPtr, then,
makes Selection::NotifySelectionListeners() call its OnSelectionChange()
immediately after AutoCopyListener.

Unfortunately, this patch includes making of MOZ_CAN_RUN_SCRIPT_BOUNDARY and
MOZ_CAN_RUN_SCRIPT a lot since some methods of AccessibleCaretEventHub are
marked as MOZ_CAN_RUN_SCRIPT and including AccessibleCaretEventHub.h into
Selection.h causes compile the compile errors.

Differential Revision: https://phabricator.services.mozilla.com/D4733
2018-08-31 21:19:44 +00:00
Masayuki Nakano
f55634a647 Bug 1487402 - Selection should stop notifying AutoCopyListener of selection changes after unlinked r=smaug
This is a regression of bug 1486370.

Unlink of Selection removes all nsISelectionListener first, then, it removes
all its ranges since it does not want to notify the changes anymore.

After bug 1486370, Selection starts to store only bool flag whether it should
notify AutoCopyListener of selection changes. So, unless it sets the bool flag
to false in Unlink, it'll notify selection change caused by Unlink.

Differential Revision: https://phabricator.services.mozilla.com/D4690
2018-08-30 23:47:25 +00:00
Masayuki Nakano
4050bea2df Bug 1486370 - Change nsAutoCopyListener to a static class r=smaug
nsAutoCopyListener is a singleton class but refcountable and a selection
listener.  nsFrameSelection adds it to only normal Selection when it's on
macOS or it's enabled by the pref.  Additionally, it's always first selection
listener since it's added immediately after Selection instance is created.

So, we can make it a static class, and normal Selection instance should have
a bool to decide whether it should notify nsAutoCopyListener of its changes.
Then, we can save the cost of grabbing it with local RefPtr and the virtual
call.

Additionally, this patch renames nsAutoCopyListener to mozilla::AutoCopyListener
and optimizes constructor of nsFrameSelection (using bool var cache to retrieve
the pref, avoid retrieving the pref on macOS).

Differential Revision: https://phabricator.services.mozilla.com/D4504
2018-08-30 07:36:23 +00:00
Ting-Yu Lin
46d6c38f7b Bug 1482665 Part 2 - Remove nsPresContext::AppUnitsPerCSSPixel() and replace it with mozilla::AppUnitsPerCSSPixel(). r=dholbert
Differential Revision: https://phabricator.services.mozilla.com/D3155
2018-08-13 14:29:28 -07:00
Masayuki Nakano
a4b15b756e Bug 1467796 - part 3: Make mozInlineSpellChecker::ReplaceWord() use TextEditor::ReplaceTextAsAction() r=m_kato,smaug
mozInlineSpellChecker::ReplaceWord() is used for replacing misspelled word
with a word.  So, this is necessary to be distinguished from insertText
command when we implement InputEvent.inputType.  So, we should make it
use TextEditor::ReplaceTextAsAction() instead (same as autocomplete).

This patch makes TextEditor::ReplaceTextAsAction() take optional argument
to make callers can specify replace range.  Then, the range is a spellchecker
selection range if the caller is mozInlineSpellChecker::ReplaceWord().
Prior to this patch, it clones the range for normal selection, but it's
expensive and we may be able to reuse cached range of Selection in this case.
So, this patch makes Selection::AddRangeInternal() checks if given range is
in another Selection and use mCachedRange as far as possible.

MozReview-Commit-ID: JIOTTsxlj4Q
2018-07-04 22:51:55 +09:00
Masayuki Nakano
2070748122 Bug 1479972 - nsRange should ignore mutations of the DOM tree while it's cached by Selection r=smaug
Selection caches an nsRange instance for saving re-allocation cost and AddMutationObserver() and RemoveMutationObserver()'s cost when its RemoveAllRangesTemporarily() is called.

Then, the instance is detached from the Selection but still referring editing point. E.g., the only text node in TextEditor when its value is set. Therefore, it'll receive character data change notification and need to check whether the point is still valid with new text.  However, the range will be always set new position later, i.e., immediately before going back to a part of Selection. Therefore, even if the point becomes invalid, nobody must not have any problems.

This patch makes Selection make the cached range not positioned, and makes nsRange ignore any mutations when it's not positioned.

Differential Revision: https://phabricator.services.mozilla.com/D2587
2018-08-01 12:25:25 +00:00
Jeff Gilbert
70a22b2878 Bug 1470325 - s/FooBinding/Foo_Binding/g - r=qdot
MozReview-Commit-ID: JtTcLL5OPF0
2018-06-26 17:05:01 -07:00
Emilio Cobos Álvarez
0348c342b8 Bug 1470930: Use enums for passing arguments for event dispatch. r=smaug
MozReview-Commit-ID: DsNuF7GAflJ
2018-06-26 18:22:06 +02:00
Emilio Cobos Álvarez
4b8b5e1717 Bug 1465585: Switch from mozilla::Move to std::move. r=froydnj
This was done automatically replacing:

  s/mozilla::Move/std::move/
  s/ Move(/ std::move(/
  s/(Move(/(std::move(/

Removing the 'using mozilla::Move;' lines.

And then with a few manual fixups, see the bug for the split series..

MozReview-Commit-ID: Jxze3adipUh
2018-06-01 10:45:27 +02:00
Boris Zbarsky
86d99155db Bug 1455676 part 14. Remove most use of nsIDOMNode in dom/. r=qdot 2018-05-29 22:58:49 -04:00
Boris Zbarsky
02774793c2 Bug 1377980 part 2. Remove most C++ use of nsIDOMRange. r=mccr8 2018-05-17 12:01:38 -04:00
Adrian Wielgosik
ea6df64f46 Bug 1460940 - Convert nsIDocumentEncoder to use nsIDocument. r=bz
MozReview-Commit-ID: 1Nla9DnwFiu
2018-05-11 19:46:15 +02:00
Boris Zbarsky
3efb9609f6 Bug 1387143 followup. Remove assertion that does not seem to hold and causes a CLOSED TREE. r=bzbarsky 2018-05-08 15:04:53 -04:00
Boris Zbarsky
5d017f96cf Bug 1387143 part 29. Remove nsISelection. r=mats 2018-05-08 13:52:42 -04:00
Boris Zbarsky
bcab2c9f4c Bug 1387143 part 27. Remove some unused nsISelection methods. r=mats 2018-05-08 13:52:42 -04:00
Boris Zbarsky
51ab63aa51 Bug 1387143 part 26. Remove nsISelection::Modify. r=mats 2018-05-08 13:52:42 -04:00
Boris Zbarsky
855d49e122 Bug 1387143 part 25. Remove nsISelection::DeleteFromDocument. r=mats 2018-05-08 13:52:42 -04:00
Boris Zbarsky
586f4fc92c Bug 1387143 part 24. Remove nsISelection::ContainsNode. r=mats 2018-05-08 13:52:42 -04:00
Boris Zbarsky
87fdbf744c Bug 1387143 part 23. Remove nsISelection collapse* methods. r=mats 2018-05-08 13:52:41 -04:00
Boris Zbarsky
dad97be012 Bug 1387143 part 22. Remove nsISelection isCollapsed/collapsed bits. r=mats 2018-05-08 13:52:39 -04:00
Boris Zbarsky
da3b7af4e4 Bug 1387143 part 21. Remove nsISelection getters for anchor and focus points. r=mats
Instead of copying spec-duplicating comments from nsISelection.idl to
Selection.webidl, this just points the latter to the right spec.
2018-05-08 13:52:38 -04:00
Boris Zbarsky
3d7e344fa9 Bug 1387143 part 20. Remove nsISelectionPrivate. r=mats 2018-05-08 13:52:38 -04:00
Boris Zbarsky
3a63497f5f Bug 1387143 part 19. Remove remaining methods from nsISelectionPrivate. r=mats 2018-05-08 13:52:38 -04:00
Boris Zbarsky
89160556f4 Bug 1387143 part 18. Remove ScrollIntoView bits from nsISelectionPrivate. r=mats 2018-05-08 13:52:38 -04:00
Boris Zbarsky
682fac60a9 Bug 1387143 part 17. Remove GetRangesForInterval bits from nsISelectionPrivate. r=mats 2018-05-08 13:52:38 -04:00
Boris Zbarsky
1794127e77 Bug 1387143 part 16. Remove nsISelectionPrivate::GetType. r=mats 2018-05-08 13:52:38 -04:00
Boris Zbarsky
5aadc274e5 Bug 1387143 part 15. Remove nsISelectionPrivate::Get/SetSelectionDirection. r=mats 2018-05-08 13:52:38 -04:00
Boris Zbarsky
170f0b5380 Bug 1387143 part 14. Remove nsISelectionPrivate::GetCachedFrameOffset. r=mats. 2018-05-08 13:52:37 -04:00
Boris Zbarsky
9b0537eabf Bug 1387143 part 13. Remove nsISelectionPrivate::Get/SetCanCacheFrameOffset. r=mats 2018-05-08 13:52:37 -04:00
Boris Zbarsky
50bb8b276c Bug 1387143 part 12. Remove nsISelectionPrivate::Add/RemoveSelectionListener. r=mats
None of the C++ callers of RemoveSelectionListener care about whether the
listener was already-added, and the only JS caller is in a test and knows the
listener was added.  So the behavior change to no-op instead of throwing when
trying to remove a nonexistent listener is OK.  Furthermore, the removal is
null-safe, so there's no point to explicitly failing if null is passed (which
it never is).

Since content can't directly add selection listeners, we can just use an
infallible append instead of returning errors callers don't check for anyway.

Also, no one passes null to AddSelectionListener, so we don't have to worry
about that part.
2018-05-08 13:52:37 -04:00
Boris Zbarsky
17705db640 Bug 1387143 part 10. Remove toString bits from nsISelection and nsISelectionPrivate. r=mats. 2018-05-08 13:52:37 -04:00
Boris Zbarsky
7a57b66cbc Bug 1387143 part 9. Remove nsISelectionPrivate::Get/SetAncestorLimiter. r=mats 2018-05-08 13:52:37 -04:00
Boris Zbarsky
3e12e2c02e Bug 1387143 part 8. Remove nsISelectionPrivate::Get/SetInterlinePosition. r=mats 2018-05-08 13:52:37 -04:00
Boris Zbarsky
9f543072ec Bug 1387143 part 7. Move the TABLESELECTION_* constants from nsISelectionPrivate to a TableSelection enum. r=mats 2018-05-08 13:52:36 -04:00
Boris Zbarsky
eac07d5c7b Bug 1387143 part 1. Stop using nsISelection in nsISelectionListener. r=mats 2018-05-08 13:52:35 -04:00
Chris Peterson
5d6b16ea3b Bug 1457813 - Part 2: Replace non-asserting NS_PRECONDITIONs with MOZ_ASSERTs. r=froydnj
s/NS_PRECONDITION/MOZ_ASSERT/ and reindent

MozReview-Commit-ID: KuUsnVe2h8L
2018-04-28 12:50:58 -07:00
Emilio Cobos Álvarez
f1b4833c7d Bug 1458016: Fix bad cast to Text. r=bz
I think it's harmless security-wise, since Text and char data are both
nsIContent, so the vtable offset should be the same.

I could also just do AsContent(), which may be cleaner but involve a virtual
call, or add AsCharacterData(), just let me know.

MozReview-Commit-ID: 79I9CuCmioF
2018-04-30 22:03:33 +02:00
Boris Zbarsky
45892dfa49 Bug 1456588 part 1. Change nsIFocusManager::SetFocus to take Element. r=enndeakin 2018-04-26 10:37:46 -04:00
Emilio Cobos Álvarez
11ab7d65e7 Bug 1454241: Remove nsINode::eDATA_NODE. r=bz
MozReview-Commit-ID: 6HQDAwiGgIo
2018-04-20 03:58:00 +02:00
Andrew McCreight
7a07e0c48b Bug 1449670, part 1 - Convert IsNodeOfType(nsINode::eTEXT) to IsText(). r=bz
This method is not a virtual call, and also looks nicer.

This patch was mostly generated by a Python script, but I manually
cleaned up the code in a few places where statements didn't need to be
split across multiple lines any more.

MozReview-Commit-ID: 8JExxqSRc59
2018-04-12 15:41:00 -07:00
Boris Zbarsky
2f03e52f54 Bug 1447890 part 5. Remove nsISelection::RemoveAllRanges. r=mystor
MozReview-Commit-ID: EeMje9KW6An
2018-03-27 00:35:23 -04:00
Boris Zbarsky
60cebc0348 Bug 1447890 part 4. Remove nsISelection::GetRangeCount. r=mystor
MozReview-Commit-ID: FypNZE0oQiW
2018-03-27 00:35:22 -04:00
Boris Zbarsky
769f93f814 Bug 1447890 part 3. Remove nsISelection::GetRangeAt. r=mystor
MozReview-Commit-ID: GhtZwsciRL4
2018-03-27 00:35:22 -04:00
Boris Zbarsky
2ba075cde9 Bug 1447890 part 2. Remove nsISelection::RemoveRange. r=mystor
MozReview-Commit-ID: JXq5FYNNXPJ
2018-03-27 00:35:22 -04:00
Boris Zbarsky
189e99bd19 Bug 1447890 part 1. Remove nsISelection::AddRange. r=mystor
MozReview-Commit-ID: 1JNLZp7tbII
2018-03-27 00:35:22 -04:00
Boris Zbarsky
82e160f204 Bug 1447889 part 2. Remove the XPCOM goop for creating Selection. r=mystor
It's unused; we never create these things by contract or classid.

MozReview-Commit-ID: 3Jsyb6QHlJt
2018-03-27 00:35:20 -04:00
Boris Zbarsky
ce8d780eb8 Bug 1433566 part 13. Remove nsIDOMText. r=mystor
MozReview-Commit-ID: DvaZ96j5exf
2018-03-19 15:15:39 -04:00