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

573536 Коммитов

Автор SHA1 Сообщение Дата
cku 2a5886a1b7 Bug 1399787 - Part 6. Implement the bulk of a new PrintTargetEMF. r=jwatt
A new subclass of PrintTarget.
1. It uses PrintTargetSkPDF to generate one PDF FileDescriptor for one page.
2. In a later patch, it then passes that FD to PDFium process for converting
   a PDF page to EMF contents.

Implementation of integration with PDFium actor is added the subsequent patches.

MozReview-Commit-ID: EcuBJHRW8Wk

--HG--
extra : rebase_source : 838d798161e112952b5e148bbece730159cd49ca
2017-11-05 02:05:25 +08:00
cku 81ea1e297c Bug 1399787 - Part 5. Implement the PDFium process. r=jwatt
MozReview-Commit-ID: 502jB9DAeIC

--HG--
extra : rebase_source : 1e72415c5e2b02c3a53d4734182319af2aa5718a
extra : intermediate-source : 695dfd5232f9e3ca08205fbc99cc5cbbe8737b12
extra : source : 2903a56630965e02602ff4aa3e38c51207b6fa15
2017-10-16 16:22:07 +08:00
cku bff3b1ab99 Bug 1399787 - Part 4. Take out the code we landed in bug 1370488. r=jwatt
To move EMF conversion job to a dedicated process, I will implement a new
PrintTarget subclass, named PrintTargetEMF, to coordinate tasks among the
content process, chrome process and PDFium process. All the code that we
change in nsDeviceContextSpecWin is no longer needed.

MozReview-Commit-ID: GgKZoB92WYE

--HG--
extra : rebase_source : 4b1999bd83306dce162f76bd5e46015113a52e2b
2017-11-05 00:53:05 +08:00
cku 30d58f2b98 Bug 1399787 - Part 3. Create a top level protocol for the PDFium process. r=jwatt
Define ipdl and actor classes. Implementation of actors is added in subsequent
patches.

Control flow:
1. A user starts a printing job.
2. We create a PrintTarget to print web content page by page.
3. When printing pages:
   a. PrintTarget, who lives in the chrome process, create a new FileDescriptor
      and pass that FD to the content process.
   b. The content process renders page contents into the given FD.
   c. PrintTarget render that FD, which contains only one page, into a PDF
      file.
   d. PrintTaget asks PDFium process to convert that PDF file into EMF contents
      by *ConvertToEMF*
   e. The PDFium process converts the given PDF into EMF contents and send back
       EMF contents by *ConvertToEMFDone*
   f. PrintTaget playbacks that EMF onto a printer DC. One page is printed!
   f. If all pages are printed, then finalize print job; Otherwise, loop back
      to #a.

The control flow that we landed in bug 1370488 does not work like the flow
I described above.
In [1], we paint all pages into one single PDF file. After all pages are
rendered into this PDF file, we finalize the current print job, which means the
printing progress dialog is close. *Then* we start to convert that PDF into
EMF and print each EMF page onto printer DC. We can not cancel this conversion
task since the printing dialog is close, there is no UI allow us to do that.
One more serious problem is: since the printing progress dialog is close,
people think that printing is done, but actually it's not.

Except move EMF conversion to a dedicated process, named PDFium process, I will
also fix the behavior we landed in bug 1370488.

[1]
https://hg.mozilla.org/mozilla-central/rev/b611ec2a42bf

MozReview-Commit-ID: JAnmNc3gAVK

--HG--
extra : rebase_source : c64c4d39ccca16271959ade57edc2a8a087141b8
extra : intermediate-source : 6d6cff8961fa14160b624b2879d231b32c61a8f5
extra : source : b172d78e8c1d801e1e28afd8fedb9fcfff77d113
2017-10-13 16:58:07 +08:00
cku 0e54a2a91c Bug 1399787 - Part 2.c. Rename DrawPageToFile to SavePageToFile. r=jwatt
This is to make the naming more consistent with SavePageToBuffer.

MozReview-Commit-ID: 5miYvv9yFFR

--HG--
extra : rebase_source : d0a433e55a1a919a4207aee5f2fee9e75bd0a36e
2017-11-02 20:19:30 +08:00
cku 96911bd5d2 Bug 1399787 - Part 2.b. Add functions to read/write EMF content from/to a buffer. r=jwatt
With the help of these new function, we can serialize/deserialize EMF content
in/out a share memory object.

MozReview-Commit-ID: Dm45xEXmMqS

--HG--
extra : rebase_source : a84834075aa58099104ba9cdaa375da4b973c23b
extra : source : 61f81b148f8b1d1569d7cf279575b38f4570171f
2017-11-01 20:27:17 +08:00
cku fea20dd4a5 Bug 1399787 - Part 2.a. Add functions to load the content of a PDF from a FileDescriptor. r=jwatt
All the functions added in Part 2 are utilities for sharing EMF/PDF contents
between processes.

MozReview-Commit-ID: 3qKosXH56kY

--HG--
extra : rebase_source : 677bf9f30399f28e1e094843448c133b0c2391a7
extra : source : b61b651ed6f668e32176353d346b25d23e2cd932
2017-11-01 21:33:28 +08:00
cku eefa6c8ea6 Bug 1399787 - Part 1. Fix namespacing and include issues hidden by unified compilation. r=jwatt
We will create several new files in the following patches for IPC and a new
subprocess. Several already existed files will be shifted into new build units,
we will meet several compile errors because of it.

This patch fixes those compile error in advance.

MozReview-Commit-ID: 5hd0sNYfBu0

--HG--
extra : rebase_source : d4cca529623586188ffebffd858f53188d12bb50
2017-10-06 22:01:22 +08:00
Jon Leighton 29c83eed34 servo: Merge #19461 - Handle cases where selection API doesn't apply (from jonleighton:issue-19171-4); r=KiChjang
The selection API only applies to certain <input> types:

https://html.spec.whatwg.org/multipage/#do-not-apply

This commit ensures that we handle that correctly.

Some notes:

1. TextControl::set_dom_selection_direction now calls
   set_selection_range(), which means that setting selectionDirection will
   now fire a selection event, as it should per the spec.

2. There is a test for the firing of the select event in
   tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/select-event.html,
   however the test did not run due to this syntax error:

   (pid:26017) "ERROR:script::dom::bindings::error: Error at http://web-platform.test:8000/html/semantics/forms/textfieldselection/select-event.html:50:11 missing = in const declaration"

   This happens due to the us of the "for (const foo of ...)" construct.
   Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
   this should actually work, so it's somewhat unsatisfying to have to
   change the test.

3. I removed tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html
   because it doesn't seem to add any extra value - the selection API
   always applies to textarea elements, and the API is tested elsewhere.

4. If an `<input>`'s type is unset, it defaults to a text, and the
   selection API applies. Also, if an `<input>`'s type is set to an
   invalid value, it defaults to a text too. This second case doesn't
   currently work, and I'll need to do more restructuring of the code in
   a future commit. See discussion with nox in IRC:
   https://mozilla.logbot.info/servo/20171201#c13946454-c13946594

Source-Repo: https://github.com/servo/servo
Source-Revision: db41cc00be93523114092125859534b107ec772a

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : 1ac0a74fcea1cfc06a94607896101667847e727c
2017-12-10 18:37:58 -06:00
Ryan VanderMeulen ee4484bd10 Merge inbound to m-c. a=merge 2017-12-10 16:06:08 -05:00
Ryan VanderMeulen b592b428c8 Merge autoland to m-c. a=merge 2017-12-10 16:04:17 -05:00
Ryan VanderMeulen e20ec3b2a6 Backed out changeset 009e9e44919f (bug 1399400) for bustage. 2017-12-10 15:02:16 -05:00
ffxbld 7b5a586bff No bug, Automated HPKP preload list update from host bld-linux64-spot-036 - a=hpkp-update 2017-12-10 12:02:11 -08:00
ffxbld 20053f4730 No bug, Automated HSTS preload list update from host bld-linux64-spot-036 - a=hsts-update 2017-12-10 12:02:07 -08:00
Olli Pettay 2acfb90235 Bug 1422092 - Revert the changes made by bug 1399603. r=mrbkap 2017-12-10 14:52:49 -05:00
Olli Pettay b4030794fa Bug 1423159 - Ensure proper multiprocess mouse enter/exit handling. r=stone 2017-12-10 14:49:49 -05:00
Blake Kaplan 1744b5cba2 Bug 1399400 - Use a strong reference when handling mTextField. r=bzbarsky
MozReview-Commit-ID: 4EqS1huHnVN
2017-12-10 14:45:54 -05:00
ffxbld 4d1e04053a No bug, Automated HPKP preload list update from host bld-linux64-spot-030 - a=hpkp-update 2017-12-10 11:22:34 -08:00
ffxbld 31d8adf7f1 No bug, Automated HSTS preload list update from host bld-linux64-spot-030 - a=hsts-update 2017-12-10 11:22:30 -08:00
Kartikaya Gupta 0fb09505ab Bug 1424280 - Update cargo lockfiles and re-vendor rust dependencies. r=jrmuizel
MozReview-Commit-ID: 1G7oWr52koH
2017-12-10 13:49:02 -05:00
Kartikaya Gupta 071a573dc4 Bug 1424280 - Replace serde and serde_derive with Gankro's modified branch. r=jrmuizel
The branch is based off serde 1.0.23 and includes additional changes for faster
enum deserialization which we want for WebRender. The changes are in the process
of being upstreamed but will take a while.

MozReview-Commit-ID: 4xaPQpffzYL
2017-12-10 13:48:54 -05:00
Kartikaya Gupta 0e9ffe73d2 Bug 1424280 - Update webrender to commit f9bc4a5c263e707e3498bea47d3ec9096cc3d099. r=jrmuizel
This includes the re-generated FFI header.

MozReview-Commit-ID: 6fvUNwu8ueT
2017-12-10 13:48:41 -05:00
Glenn Watson 44f20cec67 servo: Merge #19531 - Update WR (bitmap font fixes, serde deserialization optimizations) (from glennw:update-wr-bitmap-fonts); r=jdm
Source-Repo: https://github.com/servo/servo
Source-Revision: 92cbf5630966c2a3f655e1edefa451628f2811ef

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : e017cb40f1afa6b46a5ba30885224b87aa3fb414
2017-12-10 11:12:20 -06:00
Alastor Wu 0963f88b98 Bug 1417300 - store mDecodedAudioDuration before adjusting sample time. r=jya
mDecodedAudioDuration should only save unadjusted timestamp, or it would
cause next adjustment to be incorrect.

MozReview-Commit-ID: 7grtYs075p0

--HG--
extra : rebase_source : ad146e7c34b6154629c1ff98992d5c0209d3ef80
2017-12-11 00:03:51 +08:00
Ciure Andrei cd742d7638 Merge inbound to mozilla-central r=merge a=merge 2017-12-10 11:55:46 +02:00
Simon Sapin 0a48e0345b servo: Merge #19540 - Check that 'style' is compiled in a supported configuration (from servo:style-features); r=emilio
Provide an explanatory error message when the compilation would fail because of missing or duplicate items.

Source-Repo: https://github.com/servo/servo
Source-Revision: 29d960ee5c043ba87ec0da565b5d61979a8a9b78

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : 938036878f0738eb87e98a6f70a0f031d465b240
2017-12-09 20:00:23 -06:00
Tooru Fujisawa 0929198371 Bug 1424074 - Register event listener earlier in browser_bug703210.js. r=Paolo 2017-12-09 06:08:44 +09:00
Tooru Fujisawa 66fd8a5699 Bug 1424083 - Wait for the mouseover event instead of attribute in browser_customizemode_uidensity.js r=Paolo 2017-12-09 06:08:44 +09:00
Tooru Fujisawa 99fcca089d Bug 1421120 - Wait for the next event tick before resolving promise in webrtc tests. r=Mossop 2017-12-09 06:08:44 +09:00
Tooru Fujisawa 4649299e4a Bug 1421116 - Wait for the next event tick before resolving promise in browser_translation_exceptions.js. r=Mossop 2017-12-09 06:08:44 +09:00
Tooru Fujisawa 4e1ece6904 Bug 1418184 - Use BrowserTestUtils.waitForEvent in browser/components/sessionstore/test/. r=felipe 2017-12-09 06:08:43 +09:00
Tooru Fujisawa c43c8f4bd8 Bug 1416446 - Part 1: Wait for the next tick in BrowserTestUtils.waitForEvent. r=Paolo 2017-12-09 06:08:43 +09:00
Tooru Fujisawa 070eb80e9c Bug 1416446 - Part 0.2: Fix browser_981418-widget-onbeforecreated-handler.js to wait for events in correct order and timing. r=Paolo 2017-12-09 06:08:43 +09:00
Tooru Fujisawa f4bbfb6432 Bug 1416446 - Part 0.1: Fix DateTimeTestHelper.waitForPickerReady to wait for events in correct order and timing. r=Paolo 2017-12-09 06:08:42 +09:00
Tooru Fujisawa aeffd9301b Bug 1424595 - Ignore Promise rejection for denied access in browser/base/content/test/permissions/browser_temporary_permissions_expiry.js r=johannh 2017-12-10 05:15:49 -06:00
Ciure Andrei 119c3e13a3 Merge mozilla-central to mozilla-inbound. r=merge a=merge CLOSED TREE 2017-12-10 12:08:44 +02:00
shindli 3dbeae82e5 Backed out 2 changesets (bug 1424571, bug 952453) for FATAL ERROR PROCESSING MOZBUILD FILE r=backout on a CLOSED TREE
Backed out changeset c05f6d6df510 (bug 1424571)
Backed out changeset 2e682c1841a1 (bug 952453)

--HG--
rename : dom/notification/test/mochitest/MockServices.js => dom/tests/mochitest/notification/MockServices.js
rename : dom/notification/test/mochitest/NotificationTest.js => dom/tests/mochitest/notification/NotificationTest.js
rename : dom/notification/test/mochitest/mochitest.ini => dom/tests/mochitest/notification/mochitest.ini
rename : dom/notification/test/mochitest/test_bug931307.html => dom/tests/mochitest/notification/test_bug931307.html
rename : dom/notification/test/mochitest/test_notification_basics.html => dom/tests/mochitest/notification/test_notification_basics.html
rename : dom/notification/test/mochitest/test_notification_storage.html => dom/tests/mochitest/notification/test_notification_storage.html
2017-12-10 07:46:19 +02:00
Kyle Machulis 2b252a36db Bug 1424571 - Move all notification tests to dom/notification; r=baku
Tests were split between dom/notification and
dom/test/mochitest/notification. Moving them all to the same place.

MozReview-Commit-ID: IP1YtIBmHcD


--HG--
rename : dom/tests/mochitest/notification/MockServices.js => dom/notification/test/mochitest/MockServices.js
rename : dom/tests/mochitest/notification/NotificationTest.js => dom/notification/test/mochitest/NotificationTest.js
rename : dom/tests/mochitest/notification/mochitest.ini => dom/notification/test/mochitest/mochitest.ini
rename : dom/tests/mochitest/notification/test_bug931307.html => dom/notification/test/mochitest/test_bug931307.html
rename : dom/tests/mochitest/notification/test_notification_basics.html => dom/notification/test/mochitest/test_notification_basics.html
rename : dom/tests/mochitest/notification/test_notification_storage.html => dom/notification/test/mochitest/test_notification_storage.html
2017-12-09 21:25:58 -08:00
Kyle Machulis abd8d10b15 Bug 952453 - Remove mozNotification; r=baku
MozReview-Commit-ID: 5wAa5mYFDq4
2017-12-09 21:25:56 -08:00
Lars T Hansen dd34d2a589 Bug 1423864 - Rabaldr, remove ATOMIC_PTR macro. r=bbouvier
This turns the ATOMIC_PTR macro into a function and merges the
prepareMemoryAccess() call into that function, for a nice net cleanup
+ movement of platform code.

(This would be even prettier with C++14 automatic return type
deduction but that is a "not yet" feature.)

MozReview-Commit-ID: JwWOQIli5sS

--HG--
extra : rebase_source : 2bb52ba983455c7a1cef0fa47303e73b1f2704a9
2017-12-07 12:08:24 +01:00
Lars T Hansen ab728154ab Bug 1420158 - rabaldr, rename register variables. rs=bbouvier
MozReview-Commit-ID: 32oW3SpdRjN

--HG--
extra : rebase_source : a80a13ef80eb22fcfef47636cf4b4bc7ade742fd
2017-12-08 16:59:09 +01:00
Fred Lin c100228fea Bug 1419401 - show HTTP/2.0 200 OK in raw header;r=Honza
MozReview-Commit-ID: 7ApdEDofYwJ

--HG--
extra : rebase_source : c9960ed8128793cc615f6ed62bb7ec5fca5bd15d
2017-12-07 16:22:55 +08:00
Masayuki Nakano 6b577ea0fa Bug 1423835 - part 3: Rename EditorDOMPointBase::GetChildAtOffset() to EditorDOMPointBase::GetChild() r=m_kato
Different from RangeBoundaryBase, EditorDOMPointBase can store only child node.
I.e., mOffset may be invalid until its Offset() is called.  So,
GetChildAtOffset() isn't good name.  It should be just GetChild().

Similarly, GetNextSiblingOfChildAtOffset() and
GetPreviousSiblingOfChildAtOffset() should be renamed to GetNextSiblingOfChild()
and GetPreviousSiblingOfChild().

MozReview-Commit-ID: WpkPmDwkrL

--HG--
extra : rebase_source : 2be1fcbee129f4c96e9b166be5a924845340708f
2017-12-07 19:08:56 +09:00
Masayuki Nakano dacd109e2f Bug 1423835 - part 2: Rename EditorDOMPointBase::Container() to EditorDOMPointBase::GetContainer() and add some useful methods to access its container r=m_kato
EditorDOMPointBase::Container() may return nullptr.  So, it should be renamed
to GetContainer().

Then, the method name becomes longer and a lot of callers access the result
directly.  So, there should be following methods to make the callers shorter:

- GetContainerAsContent() to return the container as nsIContent*.
- GetContainerAsElement() to return the container as dom::Element*.
- GetContainerAsText() to return the container as dom::Text.
- GetContainerAsDOMNode() to return the container as nsIDOMNode*.
- CanContainerHaveChildren() to check if the container can have child nodes.
- IsInDataNode() to check if the point is in a data node including text node.
- IsInTextNode() to check if the point is in a text node.
- IsContainerHTMLElement() to check if the container is specific HTML element.
- IsContainerAnyOfHTMLElements() to check if the container is one of the
  specified HTML elements.

MozReview-Commit-ID: LkN2WBbCPj0

--HG--
extra : rebase_source : 9da1e70d4c74f7ad573e244cf6c7b21a0c7b4410
2017-12-07 18:45:52 +09:00
Masayuki Nakano d95c27869d Bug 1423835 - part 1: Add EditorDOMPointBase::SetToEndOf() to initialize the instance at end of container node r=m_kato
Editor code sometimes sets a DOM point to end of a node.  In this case, we
need to write |Set(node, node->Length())|.  So, it should have
|void SetToEndOf(const nsINode* aContainer)| for making meaning of the code
clearer.

MozReview-Commit-ID: 91shMCD2d84

--HG--
extra : rebase_source : 3401af50aabc1b677deeae664e8c56506182d28c
2017-12-07 17:27:20 +09:00
Masayuki Nakano ed66480149 Bug 1423097 - part 3: Fix new orange caused by an existing bug of EditorBase::DeleteSelectionAndCreateElement() r=m_kato
Even after EditorBase::DeleteSelectionAndCreateElement() creates a new element,
it tries to collapse selection with |pointToInsert| which is outdated after
inserting new element.

So, it should recompute the caret position with new DOM tree.

MozReview-Commit-ID: DKh2uhItIol

--HG--
extra : rebase_source : c0c30e1c809784af64e87596b471c472350857a8
2017-12-07 13:57:35 +09:00
Masayuki Nakano bab72d08e8 Bug 1423097 - part 2: Add overloads of nsRange::SetStart(), nsRange::SetEnd(), nsRange::IsPointInRange() and nsRange::ComparePoint() to use them with RawRangeBoundary r=smaug
nsRange::SetStart(), nsRange::SetEnd(), nsRange::IsPointInRange() and
nsRange::ComparePoint() take a set of container node and offset in it to
specifying a DOM point.  However, the caller may not have computed the offset
but may know the child node at the point.  In such case, they can avoid
computing the offset with nsINode::IndexOf() if they have overloads which
take RawRangeBoundary.

Therefore, this patch implements the overloads and changes the callers in
editor.

MozReview-Commit-ID: E4DLbAgTTCI

--HG--
extra : rebase_source : 8d1632a030f1e0a0dd2b81c3996c19d427e8b0bd
2017-12-05 17:50:13 +09:00
Masayuki Nakano 0021ffcddf Bug 1423097 - part 1: Implement Selection::AnchorRef() and Selection::FocusRef() r=smaug
Some methods of editor retrieves anchor and focus of selection.  However, there
are no methods which directly access RangeBoundary of anchor and focus.

This patch adds it for making editor code simpler and avoiding unnecessary
child offset computation.

MozReview-Commit-ID: EvepQpFMi8S

--HG--
extra : rebase_source : 38f3c506db5c9d8790bbd625d552bfbc8d99cebc
2017-12-05 16:36:57 +09:00
Masayuki Nakano d942210f2e Bug 1408125 - part 5: Redesign HTMLEditor::NormalizeEOLInsertPosition() with EditorRawDOMPoint r=m_kato
HTMLEditor::NormalizeEOLInsertPosition() takes a set of container node and
offset in it for specifying insertion point.  So, this should be replaced
with |const EditorRawDOMPoint&| and it should return |EditorDOMPoint| rather
than modifying the argument.

Additionally, perhaps, GetBetterInsertionPointFor() is better name for it.

MozReview-Commit-ID: IB1FhrkzK2G

--HG--
extra : rebase_source : 55f8c1d9fa1f149e81114c929f6e6232aba03905
2017-12-05 15:36:49 +09:00
Lars T Hansen 7cf5906e74 Bug 1420158 - rabaldr register targeting, Create RAII wrappers for atomic ops regalloc/targeting. r=bbouvier
With one exception this removes all platform ifdefs from the high
level of the atomics code generators by moving the register targeting
into RAII wrappers.  These wrappers are placed in the new section of
the file, introduced by the previous patch.  These wrappers also get
rid of several of the needWhateverTemp() functions because they are
rolled into the RAII wrappers.

The exception is 64-bit atomic ops on x86: here, we are always starved
for registers and must use slightly different APIs, but most of the
code is common and there's a clear pattern at work, so I don't think
this is bad.

Each wrapper carries a method implementing the operation that the
wrapper is for, and calls lower-level code to implement the operation
with appropriate arguments.  Thus details of the wrapper are hidden,
and there's minimal risk of abuse or accident.

MozReview-Commit-ID: HeqgqrImxms

--HG--
extra : rebase_source : 73c743bca17dc365e816c64cc2c609dcc3912e09
2017-12-04 14:52:58 +01:00