Commit Graph

96 Commits

Author SHA1 Message Date
Jonathan Watt
9243470005 Bug 1436048 part 1 - Use a user defined type for font weight everywhere. r=jfkthame,emilio 2018-04-13 20:34:37 +01:00
Xidorn Quan
431f177e6f Bug 1449087 part 2 - Use Servo data to back @font-face rule. r=emilio
This patch does the following things:
* Create a new class ServoFontFaceRule for CSSOM of @font-face rule
  which mostly follows how nsCSSFontFaceRule was implemented.
* Remove the old nsCSSFontFaceRule and binding code to create it.
* Have FontFace backed by Servo data via making mRule and mDescriptors
  of the class hold RawServoFontFaceRule like ServoFontFaceRule.

To keep this patch small, it effectively just delays the conversion
from Servo data to nsCSSValue from parsing to using. This may cause
worse performance if the font set is flushed repeatedly. Supposing we
don't flush font set very frequently, it may not be a big deal.

We may still want to remove the intermediate nsCSSValue conversion at
some point, and have everything converted to their final form directly
when used, but that can happen in followups.

There are some unfortunate bits from this change:
* We lose style sheet for logging in FontFaceSet. This is probably not
  all that worse, because we wouldn't have that before either if the
  page doesn't use CSSOM to visit it. But we should figure out some
  approach to fix it anyway.
* InspectorFontFace no longer shares the same rule object as CSSOM.
  This isn't really a problem if the @font-face rule isn't very mutable.
  Unless we want to make the rule returned from InspectorFontFace to be
  mutable (i.e. via inspector), not using the same object probably isn't
  too bad.

This patch switches the code we use to serialize stuff in FontFace and
CSSFontFaceRule, which leads to some failures in tests. Specifically,
the expected changes including:
* Value of font-family now can be serialized to identifier sequence like
  font-family property. The old code always serializes it to string,
  but it doesn't seem to have different requirement than the property.
  Blink can serialize to identifier as well.
* Family name inside local() is also changed to use the same way as
  family names elsewhere (i.e. can be identifier sequence). Blink has
  the same behavior as the old code, but I don't think it's a big deal.
* The order of descriptors serialized gets changed. I don't think it
  matters at all.
* Empty string as font-family via using string syntax is no longer
  considered invalid for FontFace. I don't find it is mentioned anywhere
  that it should be specifically treated invalid.


MozReview-Commit-ID: 32Fk3Fi9uTs
2018-04-04 08:42:10 +10:00
Emilio Cobos Álvarez
ea593f5a1c Bug 1420680: Rework how the loadability of font-faces is computed. r=jfkthame,bz
This reworks bug 1440561 so that we only precompute loads that belong to our
user font set, avoiding messing up with fonts in the cache that belong to other
pages.

The loadability of a font is precomputed in PreTraverse in the same way as we
did, but only for the fonts that we may end up loading. This is stored in
FontFaceSet now.

Also, the principal shenanigans that this code did are reworked to be explicit
about when the document principal changes in ResetToURI, instead of having a
member around and a mutable variable. This makes the code easier to follow.

MozReview-Commit-ID: 9ofTbaLDUF7
2018-04-03 16:22:43 +02:00
Jonathan Kew
4a02853af1 Bug 1435984 - patch 3 - Store variation settings from the @font-face rule in the gfxFontEntry for user fonts. r=jwatt 2018-02-14 22:02:05 +11:00
Boris Zbarsky
4dfab0c844 Bug 1434818. Remove unused return value of FontFaceSet::Add. r=jfkthame
MozReview-Commit-ID: JHOpGZM3Scz
2018-02-01 14:23:34 -05:00
Emilio Cobos Álvarez
de5d26b942 Bug 1434474: There's no need to rebuild font / counter styles / font feature values off a runnable. r=bholley
Everything that needs them up-to-date will call flush appropriately, there
should be no need to do it manually.

This way we coalesce all the stylist updates until the next style flush in the
best case, or until one of the consumers actually needs them.

MozReview-Commit-ID: BVsxXxhtcKL
2018-01-31 11:12:36 +01:00
Cameron McCormack
555fce79b2 Bug 1425000 - Use a consistent window for CSP, etc. for FontFace loads. r=jfkthame
MozReview-Commit-ID: F2xhsgTBI1V
2017-12-21 14:07:31 -05:00
Daniel Holbert
8fea3c215f Bug 1412346 part 5: (automated patch) Switch a bunch of C++ files in layout to use our standard mode lines. r=jfkthame
This patch was generated automatically by the "modeline.py" script, available
here: https://github.com/amccreight/moz-source-tools/blob/master/modeline.py

For every file that is modified in this patch, the changes are as follows:
 (1) The patch changes the file to use the exact C++ mode lines from the
     Mozilla coding style guide, available here:
https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Coding_Style#Mode_Line

 (2) The patch deletes any blank lines between the mode line & the MPL
     boilerplate comment.

 (3) If the file previously had the mode lines and MPL boilerplate in a
     single contiguous C++ comment, then the patch splits them into
     separate C++ comments, to match the boilerplate in the coding style.

MozReview-Commit-ID: EuRsDue63tK
2017-10-27 10:33:53 -07:00
Cameron McCormack
4ad8de31f3 Bug 1397626 - Part 2: Replace uses of FontFamilyListRefCnt with SharedFontList. r=xidorn
MozReview-Commit-ID: 7HoBae9UOks
2017-10-02 10:24:25 +08:00
Cameron McCormack
d4c83187d5 Bug 1384741 - Part 3: Buffer up CSP violation reports when pre-emptively checking cached font loads, and dispatch them when trying to use cached fonts. r=jfkthame
MozReview-Commit-ID: 7hUI160sNqv
2017-08-07 10:12:12 +08:00
Cameron McCormack
5c7395795f Bug 1376964 - Part 9: Use gfxFontSrcPrincipal in the user font set and cache. r=jfkthame
MozReview-Commit-ID: LRRFbkhbgts
2017-07-08 18:00:24 +08:00
Cameron McCormack
204525bf4b Bug 1376964 - Part 4: Call FontLoadAllowed ahead of time and cache the results for style worker threads. r=jfkthame
Handling a document's node principal changing is done in part 9.

MozReview-Commit-ID: 1gPtRpddys5
2017-07-07 13:35:28 +08:00
Cameron McCormack
630ffcf989 Bug 1376964 - Part 2: Record the docshell's "private browsing" flag on FontFaceSet. r=jfkthame
MozReview-Commit-ID: 3j0RISufybF
2017-07-05 17:41:01 +08:00
Cameron McCormack
af868f04e5 Bug 1376964 - Part 1: Record the docshell's "bypass cache" flag on FontFaceSet. r=jfkthame
MozReview-Commit-ID: FW19nms4ZEB
2017-07-05 17:33:46 +08:00
Carsten "Tomcat" Book
c259c0dd95 Backed out changeset aaacb772bada (bug 1376964) for bustage - error C2143: syntax error 2017-07-12 12:41:57 +02:00
Carsten "Tomcat" Book
c038aafbf3 Backed out changeset c0e5f138b42a (bug 1376964) 2017-07-12 12:41:39 +02:00
Carsten "Tomcat" Book
1dcab108c9 Backed out changeset 6bfb66a2c03e (bug 1376964) 2017-07-12 12:41:35 +02:00
Carsten "Tomcat" Book
6bfe8c71d0 Backed out changeset 041b34959d76 (bug 1376964) 2017-07-12 12:41:25 +02:00
Cameron McCormack
53b3613e5e Bug 1376964 - Part 9: Use gfxFontSrcPrincipal in the user font set and cache. r=jfkthame
MozReview-Commit-ID: LRRFbkhbgts
2017-07-12 16:36:42 +08:00
Cameron McCormack
537eefd98b Bug 1376964 - Part 4: Call FontLoadAllowed ahead of time and cache the results for style worker threads. r=jfkthame
Handling a document's node principal changing is done in part 9.

MozReview-Commit-ID: 1gPtRpddys5
2017-07-12 16:35:46 +08:00
Cameron McCormack
e0e19c2012 Bug 1376964 - Part 2: Record the docshell's "private browsing" flag on FontFaceSet. r=jfkthame
MozReview-Commit-ID: 3j0RISufybF
2017-07-12 16:35:44 +08:00
Cameron McCormack
0e4a93da75 Bug 1376964 - Part 1: Record the docshell's "bypass cache" flag on FontFaceSet. r=jfkthame
MozReview-Commit-ID: FW19nms4ZEB
2017-07-12 16:35:44 +08:00
Carsten "Tomcat" Book
bd672e42b6 Backed out changeset 99c0d338a5f3 (bug 1376964) for bustage 2017-07-12 10:33:05 +02:00
Carsten "Tomcat" Book
92009f4a46 Backed out changeset 04e9846700ae (bug 1376964) 2017-07-12 10:32:24 +02:00
Carsten "Tomcat" Book
718f42ee0d Backed out changeset 20866468f52d (bug 1376964) 2017-07-12 10:32:20 +02:00
Carsten "Tomcat" Book
5abe24a914 Backed out changeset b7424dfa039c (bug 1376964) 2017-07-12 10:32:11 +02:00
Cameron McCormack
7d64df7f20 Bug 1376964 - Part 9: Use gfxFontSrcPrincipal in the user font set and cache. r=jfkthame
MozReview-Commit-ID: LRRFbkhbgts
2017-07-12 13:03:35 +08:00
Cameron McCormack
fa3b1cf3ca Bug 1376964 - Part 4: Call FontLoadAllowed ahead of time and cache the results for style worker threads. r=jfkthame
Handling a document's node principal changing is done in part 9.

MozReview-Commit-ID: 1gPtRpddys5
2017-07-12 13:03:35 +08:00
Cameron McCormack
49a6d75cdb Bug 1376964 - Part 2: Record the docshell's "private browsing" flag on FontFaceSet. r=jfkthame
MozReview-Commit-ID: 3j0RISufybF
2017-07-12 13:03:35 +08:00
Cameron McCormack
19167b7c31 Bug 1376964 - Part 1: Record the docshell's "bypass cache" flag on FontFaceSet. r=jfkthame
MozReview-Commit-ID: FW19nms4ZEB
2017-07-12 13:03:35 +08:00
Cameron McCormack
316e62a409 Bug 1352531 - Make dom::FontFace cache its gfxCharacterMap instead of rebuilding it every time. r=dbaron
MozReview-Commit-ID: INmKPdC9dq5
2017-04-20 17:00:59 +10:00
Cameron McCormack
0d862cb760 Bug 1356103 - Part 8: Use PostTraversalTasks to deal with FontFaceSet's Promise and DOM event dispatch during Servo traversal. r=bholley
The PostTraversalTask does not take a strong reference to the FontFaceSet
object, since as a DOM object, we can't call AddRef/Release on it
from the Servo style worker threads.  The FontFaceSet is held on to
by the nsIDocument, and only cleared during cycle collection, which
should not occur between the font metrics request and the
PostTraversalTask running.

MozReview-Commit-ID: 5aKIg4DIQ4w
2017-04-30 14:55:22 +08:00
Iris Hsiao
b5dd6e2208 Backed out 12 changesets (bug 1356103) for build bustage at PostTraversalTask.h
Backed out changeset 9fb487252c28 (bug 1356103)
Backed out changeset 301237c65945 (bug 1356103)
Backed out changeset 7bc3a4861a39 (bug 1356103)
Backed out changeset 2f383d89184b (bug 1356103)
Backed out changeset a03112e1c9d5 (bug 1356103)
Backed out changeset c60b4c9cbd83 (bug 1356103)
Backed out changeset 34280baeaabe (bug 1356103)
Backed out changeset 31a0881cfb47 (bug 1356103)
Backed out changeset 529d037f9c33 (bug 1356103)
Backed out changeset 1c7831db6b07 (bug 1356103)
Backed out changeset 559f06e32df3 (bug 1356103)
Backed out changeset 784865d234cd (bug 1356103)
2017-05-04 17:56:25 +08:00
Cameron McCormack
d1710bdbd6 Bug 1356103 - Part 8: Use PostTraversalTasks to deal with FontFaceSet's Promise and DOM event dispatch during Servo traversal. r=bholley
The PostTraversalTask does not take a strong reference to the FontFaceSet
object, since as a DOM object, we can't call AddRef/Release on it
from the Servo style worker threads.  The FontFaceSet is held on to
by the nsIDocument, and only cleared during cycle collection, which
should not occur between the font metrics request and the
PostTraversalTask running.

MozReview-Commit-ID: 5aKIg4DIQ4w
2017-04-30 14:55:22 +08:00
Xidorn Quan
f4f44a7d01 Bug 1345696 part 2 - Move nsCSSFontFaceRule to a separate header. r=heycam
MozReview-Commit-ID: 5UsODlVQV7a
2017-03-29 10:20:40 +11:00
Ting-Yu Lin
cf4c8a5935 Bug 1338446 Part 6 - Label LoadTimer in nsFontFaceLoader::StartedLoading. r=heycam
Delete #include "mozilla/Logging.h" because it has been included.

Add FontFaceSet::Document() to get valid document for nsFontFaceLoader.

MozReview-Commit-ID: IAXM9UgvjOE
2017-03-14 21:57:34 +08:00
Cameron McCormack
616b7cd560 Bug 1337658 - Do less copying when dispatching FontFaceLoadingEvents. r=bz
MozReview-Commit-ID: 8z1Tof8lL4g
2017-02-07 22:53:00 +08:00
Ehsan Akhgari
defe36b1fe Bug 1309867 - Part 1: Create FontFaceSet's ready promise lazily; r=heycam
This should help avoid calling into the JS engine in the middle of
painting.
2016-10-18 16:19:00 -07:00
Ehsan Akhgari
4265cebeec Backout bug 1309867 for test failures 2016-10-18 11:35:07 -04:00
Ehsan Akhgari
79184474d4 Bug 1309867 - Part 1: Create FontFaceSet's ready promise lazily; r=heycam
This should help avoid calling into the JS engine in the middle of
painting.
2016-10-18 09:39:27 -04:00
Xidorn Quan
7d6c4129ab Bug 1304302 part 10 - Replace all uses of StyleSheetHandle. r=heycam
This commit is generated by the following commands with some minor
manual adjustment:

find . \( -name '*.h' -or -name '*.cpp' \) -not -path './layout/style/StyleSheet*' -exec sed -i -b \
  -e '/^\(#include\|using\)/s/StyleSheetHandle/StyleSheet/g' \
  -e 's/\(mozilla::\)\?StyleSheetHandle::RefPtr/RefPtr<\1StyleSheet>/g' \
  -e 's/StyleSheetHandle()/nullptr/g' \
  -e 's/->AsStyleSheet()//g' \
  -e 's/StyleSheetHandle/StyleSheet*/g' {} +
sed -i -b 's/sheet->AsVoidPtr()/sheet.get()/' layout/style/Loader.cpp
sed -i -b 's/AsHandle()/this/' layout/style/StyleSheet.cpp

MozReview-Commit-ID: 7abdvlKHukd
2016-09-26 22:03:25 +10:00
Christoph Kerschbaumer
2c7eff75e5 Bug 1195172 - Use channel->ascynOpen2 layout/style/FontFaceSet.cpp (r=bz,cam) 2016-03-01 13:06:13 -08:00
Cameron McCormack
c0e9a631c2 Bug 1244074 - Part 4: Use StyleSheetHandle instead of concrete style sheet class in most places. r=dholbert 2016-02-24 18:01:12 +11:00
Kyle Huey
e95edb30a9 Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
John Daggett
07855e1d3e Bug 1157064 - implementation of font-display. r=heycam,khuey 2016-01-07 14:03:05 +09:00
John Daggett
fecde03061 Bug 1224975 - add telemetry for font loading. r=m_kato 2015-11-25 14:48:16 +09:00
Cameron McCormack
b5fd6acd46 Bug 1216043 - Rename nsStyleSheet::sheetType and make it an enum class. r=dbaron
The only substantive change here, apart from a few variables changing in
size from uint16_t to uint8_t, is FontFaceSet's use of SheetType::Unknown
(0xFF) instead of 0 for FontFaceRecords for script-created FontFaces.
2015-10-20 10:16:20 +11:00
John Daggett
757388f7b4 Bug 543715 p1 - distinguish between italic and oblique. r=jfkthame 2015-10-19 11:16:43 +09:00
Phil Ringnalda
54de3916b1 Back out 2 changesets (bug 543715) because Mulet is why we can't have nice things
Backed out changeset 2d1d8e9b095c (bug 543715)
Backed out changeset bc90276ec090 (bug 543715)
2015-10-18 11:22:22 -07:00
John Daggett
9ee2488ce7 Bug 543715 p1 - distinguish between italic and oblique. r=jfkthame 2015-10-18 22:17:46 +09:00