Commit Graph

16 Commits

Author SHA1 Message Date
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
cku
319d409383 Bug 1424922 - Prevent calling PDFiumParent::Close twice. r=dvander
We call PDFiumParent::Close twice under certain conditions. Once in
PDFiumProcessParent::Delete, and once in PDFiumProcessParent's dtor. So we may
hit MOZ_ABORT which tell us that we are trying to close a closed channel.

This patch prevents hitting this abort by:
1. Only close the channel in PDFiumProcessParent::Delete, remove another call
   in PDFiumProcessParent's dtor. (Please see the change in
   PDFiumProcessParent.cpp).
2. Remove PDFiumParent::AbortConversion and relative code. We can just use
   PDFiumParent::EndConversion instead. When calling PDFiumParent::Close, we
   actually close the IPC channel *synchronously*, which means there is no need
   to register a callback by PDFiumParent::AbortConversion to receive
   actor-destroy callback.

MozReview-Commit-ID: 9i5j6t54J3h
2017-12-13 12:42:59 +08:00
cku
7be0377238 Bug 1399787 - Part 15. Detect and handle breakage of the IPC channel. r=jwatt
MozReview-Commit-ID: 6VfIbstJ6WN
2017-11-06 22:12:31 +08:00
cku
90a08196e8 Bug 1399787 - Part 13. Handle AbortDocument. r=jwatt
While aborting conversion, we need to make sure there is no coversion task
executing in the PDFium process before destroying it.

MozReview-Commit-ID: 3Iqhe8KmYv2
2017-11-05 15:34:54 +08:00
cku
cfbda6bfb4 Bug 1399787 - Part 10. Make PrintTargetEMF use the PDFium process to convert to EMF. r=jwatt
We integrate PrintTargetEMF with the PDFium process to convert PDF into EMF in
this patch.

MozReview-Commit-ID: 5F0setrL94n
2017-11-05 03:06:04 +08:00
cku
428484fc25 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
2017-10-13 16:58:07 +08:00
Cosmin Sabou
b72a6b5a25 Backed out 22 changesets (bug 1399787) for shutdown leaks on windows 7 debug tc-M without e10s r=backout on a CLOSED TREE
Backed out changeset 463d676df5da (bug 1399787)
Backed out changeset fc9776a2605d (bug 1399787)
Backed out changeset 2e91a90dfbc3 (bug 1399787)
Backed out changeset e82ab72f71ee (bug 1399787)
Backed out changeset d7fef200e8b9 (bug 1399787)
Backed out changeset a7d70f7f3335 (bug 1399787)
Backed out changeset 2800f9d20d96 (bug 1399787)
Backed out changeset 9dfa404abf9d (bug 1399787)
Backed out changeset 09b3c172a01e (bug 1399787)
Backed out changeset f9fd3e750636 (bug 1399787)
Backed out changeset 01284c55bf8a (bug 1399787)
Backed out changeset c2ab1b454283 (bug 1399787)
Backed out changeset e7bfa51404c5 (bug 1399787)
Backed out changeset 3fd2a734f887 (bug 1399787)
Backed out changeset ef21f295db3f (bug 1399787)
Backed out changeset c186893ce0fc (bug 1399787)
Backed out changeset 323da3bddaaa (bug 1399787)
Backed out changeset 3b89f189edff (bug 1399787)
Backed out changeset a47bd86c35ee (bug 1399787)
Backed out changeset 558526301a4c (bug 1399787)
Backed out changeset baa99fb50ba9 (bug 1399787)
Backed out changeset 6d82ed0ba805 (bug 1399787)
2017-12-08 13:09:56 +02:00
cku
98bba51093 Bug 1399787 - Part 15. Detect and handle breakage of the IPC channel. r=jwatt
MozReview-Commit-ID: 6VfIbstJ6WN
2017-11-06 22:12:31 +08:00
cku
b7bc9c2111 Bug 1399787 - Part 13. Handle AbortDocument. r=jwatt
While aborting conversion, we need to make sure there is no coversion task
executing in the PDFium process before destroying it.

MozReview-Commit-ID: 3Iqhe8KmYv2
2017-11-05 15:34:54 +08:00
cku
4741696685 Bug 1399787 - Part 10. Make PrintTargetEMF use the PDFium process to convert to EMF. r=jwatt
We integrate PrintTargetEMF with the PDFium process to convert PDF into EMF in
this patch.

MozReview-Commit-ID: 5F0setrL94n
2017-11-05 03:06:04 +08:00
cku
64c4f352ef 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
2017-10-13 16:58:07 +08:00
Bogdan Tara
6958db442b Backed out 22 changesets (bug 1399787) for failing on mozmake.EXE r=backout a=backout on a CLOSED TREE
Backed out changeset 0afbd07d8219 (bug 1399787)
Backed out changeset 80c062fd58fb (bug 1399787)
Backed out changeset b1457eabd34e (bug 1399787)
Backed out changeset d875e45f591e (bug 1399787)
Backed out changeset 8f600ac930ec (bug 1399787)
Backed out changeset c478fb75f5cb (bug 1399787)
Backed out changeset c995f4e18724 (bug 1399787)
Backed out changeset 0b75ef19e695 (bug 1399787)
Backed out changeset 2382a348a6c1 (bug 1399787)
Backed out changeset 93f9a5e253d8 (bug 1399787)
Backed out changeset 5c50bbde0950 (bug 1399787)
Backed out changeset 67e530c129c7 (bug 1399787)
Backed out changeset 682c60e52749 (bug 1399787)
Backed out changeset ff1436ae1ef7 (bug 1399787)
Backed out changeset cb3ae1dc20b2 (bug 1399787)
Backed out changeset bc52b1781641 (bug 1399787)
Backed out changeset d165846cb5e1 (bug 1399787)
Backed out changeset 185368267354 (bug 1399787)
Backed out changeset c385d0f60f8a (bug 1399787)
Backed out changeset 364b5b44932b (bug 1399787)
Backed out changeset 98758e79710d (bug 1399787)
Backed out changeset d56497aa5390 (bug 1399787)
2017-12-07 19:16:08 +02:00
cku
0211de0ecc Bug 1399787 - Part 15. Detect and handle breakage of the IPC channel. r=jwatt
MozReview-Commit-ID: 6VfIbstJ6WN
2017-11-06 22:12:31 +08:00
cku
68e8c7247e Bug 1399787 - Part 13. Handle AbortDocument. r=jwatt
While aborting conversion, we need to make sure there is no coversion task
executing in the PDFium process before destroying it.

MozReview-Commit-ID: 3Iqhe8KmYv2
2017-11-05 15:34:54 +08:00
cku
7c81ca6c52 Bug 1399787 - Part 10. Make PrintTargetEMF use the PDFium process to convert to EMF. r=jwatt
We integrate PrintTargetEMF with the PDFium process to convert PDF into EMF in
this patch.

MozReview-Commit-ID: 5F0setrL94n
2017-11-05 03:06:04 +08:00
cku
18545a2a22 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
2017-10-13 16:58:07 +08:00