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

2390 Коммитов

Автор SHA1 Сообщение Дата
Sebastian Hengst 5253bb7207 merge autoland to mozilla-central. r=merge a=merge
MozReview-Commit-ID: 2gWLO0vz64b
2017-09-29 13:30:42 +02:00
Masayuki Nakano 7f281b641d Bug 1403026 - Make IMEStateManager release all string buffer of its static members at XPCOM shutdown r=smaug
IMEStateManager has a static instance of InputContext which has some nsString
instances.  Then, their members will be released after XPCOM shutdown and
that is detected as unexpected destruction.

Therefore, IMEStateManager should release them by itself at XPCOM shutdown.
Using nsTSubstring::SetCapacity(0) is the simplest way to release only the
string buffers.

MozReview-Commit-ID: LMrQxQF9xPn

--HG--
extra : rebase_source : 7cbaf19b76be8db083c10270d0ee436a1c061ea2
2017-09-28 17:31:29 +09:00
Stone Shih e628cf64e9 Bug 1316251 Part3: Trigger pointer event implementation in EventStateManager. r=masayuki
To manage pointer event "state" in ESM.

MozReview-Commit-ID: HiAwvSmVTwx
2017-09-08 11:01:22 +08:00
Stone Shih 9ea2b881c8 Bug 1316251 Part2: Revise pointer event implementation. r=masayuki
Revise the pointer event implementation, includes
- Revise the implementation to fetch preference values.
- Separate the logic to get the pointer capturing frame to PointerEventHandler.

MozReview-Commit-ID: 7pdAr0XFNT2
2017-09-06 17:28:28 +08:00
Stone Shih a1d26ab3b4 Bug 1316251 Part1: Separate pointer event implementation from PresShell. r=masayuki
This patch moves pointer event related implementations to a new class.

MozReview-Commit-ID: FdBYl7vYC5I
2017-09-06 15:47:49 +08:00
Stone Shih 6cbc21aa58 Bug 1355497: Ignore preventDefault on pointerdown by WebExtensions. r=smaug.
Prevent default on pointerdown will stop firing the subsequent mouse events. Ignore the case that preventDefault by WebExtensions to avoid breaking some websites.

MozReview-Commit-ID: 9ztW1WfEg9a
2017-07-10 16:42:01 +08:00
Nicholas Nethercote dfd3b7e7aa Bug 1400459 (part 2) - Devirtualize nsIAtom. r=heycam.
This patch merges nsAtom into nsIAtom. For the moment, both names can be used
interchangeably due to a typedef. The patch also devirtualizes nsIAtom, by
making it not inherit from nsISupports, removing NS_DECL_NSIATOM, and dropping
the use of NS_IMETHOD_. It also removes nsIAtom's IIDs.

These changes trigger knock-on changes throughout the codebase, changing the
types of lots of things as follows.

- nsCOMPtr<nsIAtom> --> RefPtr<nsIAtom>

- nsCOMArray<nsIAtom> --> nsTArray<RefPtr<nsIAtom>>
  - Count() --> Length()
  - ObjectAt() --> ElementAt()
  - AppendObject() --> AppendElement()
  - RemoveObjectAt() --> RemoveElementAt()

- ns*Hashtable<nsISupportsHashKey, ...> -->
  ns*Hashtable<nsRefPtrHashKey<nsIAtom>, ...>

- nsInterfaceHashtable<T, nsIAtom> --> nsRefPtrHashtable<T, nsIAtom>
  - This requires adding a Get() method to nsRefPtrHashtable that it lacks but
    nsInterfaceHashtable has.

- nsCOMPtr<nsIMutableArray> --> nsTArray<RefPtr<nsIAtom>>
  - nsArrayBase::Create() --> nsTArray()
  - GetLength() --> Length()
  - do_QueryElementAt() --> operator[]

The patch also has some changes to Rust code that manipulates nsIAtom.

MozReview-Commit-ID: DykOl8aEnUJ

--HG--
extra : rebase_source : 254404e318e94b4c93ec8d4081ff0f0fda8aa7d1
2017-09-26 08:33:21 +10:00
Nicholas Nethercote 49963dad55 Bug 1402772 - Change nsIEventListenerChange::changedListenerNames to a count of a11y-affecting elements. r=smaug.
nsIEventListenerChange::changedListenerNames is an nsIArray attribute that
contains nsIAtoms. Bug 1396693 made it `noscript` to help with nsIAtom
deCOMtamination (bug 1392883) but more changes are needed: that array
eventually needs to be changed to nsTArray<RefPtr<nsIAtom>>.

Turns out the attribute has a single use, in a11y code. That code merely
iterates over the list and counts how many atoms it contains that match
"onclick", "onmousedown", and "onmouseup".

So this patch moves that counting functionality inside nsEventListenerChange by
changing the attribute to `countOfEventListenerChangesAffectingAccessibility`.
This saves us from having to expose the array of atoms via XPIDL.

--HG--
extra : rebase_source : db8b628998d45209ab724555a74efe90f431d3ae
2017-09-25 16:38:04 +10:00
Michael Layzell 615d87dfaf Bug 1384915 - Part 4: Update RawRange to use RangeBoundaries, r=masayuki 2017-09-25 18:14:43 -04:00
Michael Layzell 74e8b70a80 Bug 1384915 - Part 3: Avoid using node indices in IMEContentObserver, r=masayuki
MozReview-Commit-ID: 4iaNideXEFl
2017-09-25 18:14:42 -04:00
Michael Layzell 9601431bf2 Bug 1384915 - Part 2: Make NodePosition a wrapper around RangeBoundary, r=masayuki 2017-09-25 18:14:42 -04:00
Ryan VanderMeulen 145892ce27 Bug 1400586 - Skip dom/events/test/test_bug607464.html on e10s runs across all platforms. 2017-09-25 09:02:21 -04:00
Boris Zbarsky 600cbb309f Bug 1401848. Remove NS_IMPL_EVENT_HANDLER and its consumers. r=smaug
All of the objects these event handlers hang off of use webidl bindings now.

MozReview-Commit-ID: 3OdVDlcU67I
2017-09-22 18:07:05 -04:00
Stone Shih 580c8e42f6 Bug 1344108 Part3: Enable pointerevent_sequence_at_implicit_release_on_drag-manual.html. r=smaug.
MozReview-Commit-ID: AsMJc5Hpu3X
2017-02-09 17:01:03 +08:00
Florian Quèze bcf7d1dd27 Bug 1400528 - make test_bug574663.html wait until the 'blank' attribute has actually been removed, r=mconley. 2017-09-22 00:50:54 +02:00
Kris Maglione f37317cad0 Bug 1369533: Return dead wrappers rather than null for dead CallbackObject values. r=bz
We don't have access to an appropriate context to create the dead wrapper in
when the callback is nuked, so instead, this patch creates a new dead wrapper
in the caller compartment each time the property is accessed. This is the same
behavior we'd get when trying to re-wrap a cross-compartment dead wrapper, so
it's consistent with the way we handle these situations elsewhere.

MozReview-Commit-ID: 3cMeR4z8EOe

--HG--
extra : rebase_source : 7e8cf4a195ef64deb7677ce4ac9818d342815667
2017-09-04 17:21:06 -07:00
Stone Shih 459eddec0a Bug 1292134: Disable pointerevent_touch-action-span-test_touch-manual because of intermittent failures. r=kats. 2017-09-15 10:38:11 +08:00
Florian Quèze 3e165cf69a Bug 1379587 - fix tests that rely on scrolling on a not-yet-painted browser, r=mconley. 2017-09-15 23:43:56 +02:00
Nicholas Nethercote 2ef37710e7 Bug 1395828 (part 4) - Remove nsIParserService/nsParserService. r=mrbkap.
It a stateless wrapper around static methods in nsHTMLTags and nsHTMLElement,
and hence an unnecessary layer of indirection that just adds complexity and
slowness. This patch removes it, cutting almost 300 lines of code.

This requires making nsElementTable.h an exported header, to expose the
nsHTMLElement methods.

--HG--
extra : rebase_source : abbcb8e5001389affbf717092213b898673db07f
2017-09-05 20:19:06 +10:00
Michael Layzell 44f1d8fa25 Bug 1396976 - Flush IME document changes when entering nested Document Update, r=masayuki 2017-09-13 11:45:49 -04:00
Michael Layzell 5dff36164d Bug 1398883 - Disable the DataTransfer::Protected state for Firefox 57, r=baku
This isn't a super essential feature, and is just a change to try to bring us in
line with chromium and the spec. As this has apparent web compat issues, and
DataTransfer is a hard to test area, this patch moves the changes behind a pref,
which we can come back to turning on after we ship 57.
2017-09-13 11:45:48 -04:00
Andrea Marchesini 57228a9b15 Bug 1359017 - onmessageerror for WindowEventHandlers in case StructuredClone algorithm fails when deserializing, r=masayuki, r=smaug 2017-09-13 05:59:06 +02:00
Sebastian Hengst 66969c6b7b Backed out changeset 7b45c1aebf7f (bug 1359017) 2017-09-13 08:56:13 +02:00
Andrea Marchesini 68fed142b9 Bug 1359017 - onmessageerror for WindowEventHandlers in case StructuredClone algorithm fails when deserializing, r=masayuki, r=smaug 2017-09-13 05:59:06 +02:00
Sebastian Hengst f155e6119f Backed out changeset e28d6869f6a0 (bug 1359017) 2017-09-12 14:16:31 +02:00
Andrea Marchesini 92ba78b8c0 Bug 1359017 - onmessageerror for WindowEventHandlers in case StructuredClone algorithm fails when deserializing, r=masayuki, r=smaug 2017-09-12 11:57:26 +02:00
Wes Kocher b5fe3d1dc7 Merge m-c to autoland, a=merge
MozReview-Commit-ID: zTrDLmRmnn
2017-09-08 13:42:01 -07:00
Wes Kocher 2a30786cad Merge inbound to central, a=merge
MozReview-Commit-ID: 4FEkd1x2GD
2017-09-08 13:36:31 -07:00
Michael Layzell fc5a62297d Bug 1199729 - Part 6: Add some comments to DataTransfer to clarify use of methods, r=baku 2017-09-08 11:05:08 -04:00
Michael Layzell f09d1b11ca Bug 1199729 - Part 5: Update tests for new DataTransfer behaviour, r=baku 2017-09-08 11:05:08 -04:00
Michael Layzell 63ecbc4c55 Bug 1199729 - Part 4: Update EventUtils to simulate drag events more accurately, r=baku 2017-09-08 11:05:08 -04:00
Michael Layzell 18e36b497a Bug 1199729 - Part 3: Clear the DataTransfer after handling Drag and Clipboard events, r=baku 2017-09-08 11:05:07 -04:00
Michael Layzell f116f4037e Bug 1199729 - Part 2: Respect Protected mode in content documents, r=baku 2017-09-08 11:05:07 -04:00
Michael Layzell 9cfa67ef65 Bug 1199729 - Part 1: Add the Protected mode to DataTransfer, r=baku 2017-09-08 11:05:06 -04:00
Masayuki Nakano e1f1db7272 Bug 1396725 - IMEStateManager doesn't need to manage whether menu keyboard listener is installed in different process r=smaug
Currently, IMEStateManager::OnChangeFocusInternal() tries to sync the state
whether menu keyboard listener is installed between itself and active remote
process -- When menu keyboard listener is installed, it posts a message to
_only_ active remote process.  When menu keyboard listener is uninstalled,
it posts a message to _only_ active remote process.  So, it's not guaranteed
that active remote process at installing and uninstalling may be different.
If it's different, IMEStateManager in the old remote process believes that
menu keyboard listener is still installed.  This is what the cause of IME
unavailable in a remote process.

Current approach must be wrong.  IMEStateManager should manage menu keyboard
listener state only in the process which the listener is installed in.  Then,
when menu keyboard listener is uninstalled, IMEStateManager needs to restore
the latest input context in the remote process without asking the remote
process.

Therefore, this patch does:

* stops IMEStateManager::OnChangeFocusInternal() posting message when menu
  keyboard listener is installed and uninstalled.
* removes the message sender and receiver from PBrowser.
* cache the latest input context of active remote process in
  IMEStateManager::SetInputContextForChildProcess().
* make IMEStateManager::SetInputContextForChildProcess() not set input context
  when menu keyboard listener is installed in the process.
* tries to restore latest input context in the remote process in
  IMEStateManager::OnChangeFocusInternal().  If there is no cached input
  context, it does nothing and waits next SetInputContextForChildProcess() call.
* clears the cache when IMEStateManager::OnChangeFocusInternal() changes
  active remote process to different one or nullptr.

So, this must improve performance at activating and inactivating memubar and
opening and closing popup menu in the main process.

MozReview-Commit-ID: EelKSPlaXdw

--HG--
extra : rebase_source : db7334b3c0d3ce87868450ee3179692027975bd6
2017-09-07 11:46:08 +09:00
Xidorn Quan 32fe2f2b94 Bug 1397711 - Null-check widget of keyboard event before invoking its PostHandleKeyEvent. r=masayuki
MozReview-Commit-ID: KTniEBMvw9q

--HG--
extra : rebase_source : 3fa266b0097ee94f83c6567d5cebd66f41369d17
2017-09-07 22:07:34 +10:00
Olli Pettay 2e8b602108 Bug 1377131 - Try to trigger collector slices at times which disturb page js less (at least with iframes loaded after the top level page has been loaded), r=mccr8,bz
When triggering an iframe load or starting to parse a document for an iframe, the main thread may often have some time before the new page has been created. Try to trigger CC/GC slice at such point in order to avoid collector later when page is already executing its JS

--HG--
extra : rebase_source : 806df0af1dbaefb1761134eca0bb7c6ade6ac1a9
2017-09-06 18:18:11 +01:00
Nicholas Nethercote 712013de72 Bug 1396693 - Make nsIEventListenerChange::changedListenerNames noscript. r=smaug.
This is required for deCOMtamination. The patch removes the only script use of
this attribute, which is a low-importance one in a test.

--HG--
extra : rebase_source : 65c29043fbd77e60b21398216593cc9788723dd5
2017-09-05 11:52:54 +10:00
Makoto Kato b7d709c044 Bug 1397791 - Move StartBatchChanges and EndBatchChanges from nsISelectionPrivate to Selection. r=smaug
There is no reason to keep StartBatchChanges and EndBatchChanges in nsISelectionPrivate since this is noscript method.  And if moving it to Selection, we can remove virtual keyword.

MozReview-Commit-ID: Go6njiW3r2x

--HG--
extra : rebase_source : cb5bfce8312de7d49496e5f841e9786ff16102f6
2017-09-08 12:10:44 +09:00
Masayuki Nakano 4ce89d8f61 Bug 1369072 - part3: nsXBLPrototypeHandler::DispatchXBLCommand() should use controller of visible window r=smaug
With previous change, KeyboardEvent is dispatched even when invisible window
has focus.  However, nsRootWindow::GetControllerForCommand() returns controller
for focused window even when the window is invisible because it uses
nsFocusManager::GetFocusedDescendant() to retrieve focused window.

Perhaps, we can assume that users won't expect to do something with invisible
window when they type some keys.  Then, nsRootWindow::GetControllerForCommand()
should return controller for visible ancestor window if focused window is
invisible.

This patch makes nsFocusManager::GetFocusedDescendant() can return only visible
descendants.  However, it already has a bool argument.  Therefore, it should
have a flag instead of adding new flag.  Most changes of this patch is replacing
its callers.

Then, nsRootWindow::GetControllerForCommand() and nsRootWindow::GetControllers()
should have a bool flag if it should return controller(s) for visible window.
This patch adds a bool flag for it.  Fortunately, the interface isn't scriptable.

Finally, this patch makes nsXBLPrototypeHandler::DispatchXBLCommand() and
EventStateManager::DoContentCommandEvent() retrieve controller for visible
window since they are always handles user input.

MozReview-Commit-ID: GygttTHuKRm

--HG--
extra : rebase_source : 1341273c4606298cb9b890b9312d9f5c8a75d144
2017-09-07 22:54:49 +09:00
Masayuki Nakano a69ee36518 Bug 1369072 - part0: Add automated test for testing key event handlers to scroll parent document when an iframe element has or had focus r=smaug
When an <iframe> element has focus and its sub document isn't scrollable, the
parent document should be scrolled instead.

MozReview-Commit-ID: 5LSVDHDQGtI

--HG--
extra : rebase_source : 0b22a426ef0e4ab662c941f6bc759679c1b92b19
2017-09-05 15:18:02 +09:00
Masayuki Nakano 3221029e49 Bug 1396302 - IMEStateManager::OnChangeFocusInternal() should check oldWidget's IME notification requests rather than sFocusedIMEWidget r=m_kato
In some cases, sFocusedIMEWidget may be nullptr but oldWidget still has
composition since IMEStateManager doesn't guarantee that NOTIFY_IME_OF_BLUR
is sent after REQUEST_TO_COMMIT_COMPOSITION nor REQUEST_TO_CANCEL_COMPOSITION.

Therefore, when it tries to clean up old widget's composition, it should refer
the old widget's IME notification requests.

MozReview-Commit-ID: 8kZvJbHfs5z

--HG--
extra : rebase_source : 3a1aab1023ab36e3668efd93b95fb5c8ccf2f21d
2017-09-04 17:37:40 +09:00
Stone Shih 35110f00e9 Bug 1389086 Part2: Use once event listeners to avoid they are triggered after the test is done. r=smaug.
MozReview-Commit-ID: JrYXWs2yhSO
2017-08-31 16:55:39 +08:00
Stone Shih 35fc5fd478 Bug 1389086 Part1: Remove windows line ending in the test file. r=smaug.
MozReview-Commit-ID: 6JHn14XXDLM
2017-09-01 10:12:54 +08:00
Sebastian Hengst a56d428b1f merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: Gf0QPFp52Bj
2017-08-30 11:05:16 +02:00
Andrew McCreight 78807d8776 Bug 1391005 - Eliminate NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED. r=peterv
Replace it with NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION, because it
has been the same for a while.

MozReview-Commit-ID: 5agRGFyUry1

--HG--
extra : rebase_source : 5388c56b2f6905c6ef969150f0c5b77bf247624d
2017-08-29 16:02:48 -07:00
Stone Shih 22e157686e Bug 1292134 - Revise touch-action related test cases to wait for the scroll event to avoid resetting scrollLeft break the following scroll behaviors. r=kats.
MozReview-Commit-ID: JidGiZmyzk5
2017-08-17 13:45:00 +08:00
Masayuki Nakano 5c2c570f9b Bug 1393816 - part1: Cache a range until new range is created in Selection r=smaug
When setting value of <input type="text">, nsTextEditorState removes all
ranges of normal selection first.  Then, TextEditor sets the value.  Finally,
TextEditor collapses the selection at the end of the text.

In bug 1386471, we got that there are some problems to remove the call of
Selection::RemoveAllRanges() in nsTextEditorState.  Therefore, we need another
approach to improve Selection::Collapse().

The approach of this patch is, when removing all ranges from normal selection,
Selection can cache an nsRange instance if there is an instance which is not
referenced from other than the Selection (i.e., it'll be removed when
Selection::Clear() is called).  Then, Selection::Collapse() can reuse it.  With
this fix, Selection::Collapse() can reduce allocation cost and may reduce some
other cost like adding it to mutation observer.

However, keeping nsRange instance may cause increasing mutation observer's cost
since nsRange will be adjusted its start node/offset and end node/offset with
mutation observer to guarantee that the range is always valid.  So, we can
cache such range only when the caller (or its callee) will set selection range
later.  Therefore, this patch adds Selection::RemoveAllRangesTemporarily()
and make only nsTextEditorState::SetValue() and
ContentEventHandler::OnSelectionEvent() use it.

MozReview-Commit-ID: FjWrbz4S1ld

--HG--
extra : rebase_source : 83677640525e0b1a84bdd7fce63ff4704b9cc22b
2017-08-25 19:21:39 +09:00
Masayuki Nakano e3529fd155 Bug 1375502 - part2: Add nsIContentIterator::Init(nsINode*, uint32_t, nsINode*, uint32_t) r=mats
nsIContentIterator::Init() takes nsRange but it's too expensive for some users.
So, there should be another Init() which can be specified a range in DOM tree
with 2 pairs of nsINode* and uint32_t.

MozReview-Commit-ID: 6JXic0KOM2d

--HG--
extra : rebase_source : 28ff355a2aa0dcb5d65495806ef8c67f1da642ea
2017-06-26 17:26:27 +09:00
Masayuki Nakano acde25fb18 Bug 1375502 - part1: ContentEventHandler shouldn't use nsRange for temporary use r=mats
Allocating and initializing nsRange is too expensive especially for temporary
use.  However, ContentEventHandler uses nsRange only for representing two DOM
points.  So, it should use simpler helper class, RawRange, for reducing some
unnecessary runtime cost.

Note that this still uses nsRange for initializing nsIContentIterator.  This
will be fixed by the following patch.

MozReview-Commit-ID: 5TUy6yJf7HA

--HG--
extra : rebase_source : c4eb58e8f37c408c75479e6961ba9225f8bcee77
2017-06-23 13:21:47 +09:00