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

134 Коммитов

Автор SHA1 Сообщение Дата
Cameron McCormack 2fadc51f72 Bug 1352531 - Make dom::FontFace cache its gfxCharacterMap instead of rebuilding it every time. r=dbaron
MozReview-Commit-ID: INmKPdC9dq5

--HG--
extra : rebase_source : a7f0636168784227fb2b6a381fa72cf652038c12
2017-04-20 17:00:59 +10:00
Cameron McCormack 756d5f5a9a Bug 1356103 - Part 9: Use a PostTraversalTask to deal with downloadable fonts in gfxUserFontSet. r=bholley,jfkthame
Here we add a new UserFontLoadState value, STATUS_LOAD_PENDING, which
represents the state just after a gfxUserFontEntry's url()-valued source
would being loading, except that we can't start the load due to being
on a Servo style worker thread.  In that case, we defer the work of
initiating the load until just after the Servo traversal is finished.

URLs that can normally be loaded synchronously, such as data: URLs
and script-implemented protocols marked as synchronous, must be
handled asynchronously when encountered during Servo traversal, since
various main-thread only work (in FontFaceSet::SyncLoadFontData) must
happen.  This is a user visible change from stock Gecko, but should
only happen when font metrics for a data: URL font are requested
due to ch/ex unit resolution when layout hasn't previously requested
the font load.  Hopefully nobody relies on synchronous resolution of
ch/ex units with data: URLs.

We unfortunately also can't pick gfxUserFontEntry objects out of the
UserFontCache during Servo traversal, since validating the cache
entry involves doing content policy checking, which is not thread-safe
(due in part to taking strong references to nsIPrincipals).

Platform fonts and ArrayBuffer-backed DOM FontFace objects continue
to be handled synchronously.

The PostTraversalTask does not take a strong reference to the
gfxUserFontEntry object, since it is held on to by the DOM FontFace
object, which itself won't go away before the PostTraversalTask
is run.

MozReview-Commit-ID: J9ODLsusrNV

--HG--
extra : rebase_source : d3e3d1dc187cb252750b57bcecd0b1ed77a15a7c
2017-04-30 14:57:25 +08:00
Cameron McCormack cdf2cb66eb Bug 1356103 - Part 6: Make gfxUserFontSet refcounting thread-safe. r=bholley
As with a few other gfx* font-related classes, during font metrics
calculations we end up taking strong references to gfxUserFontSet,
and it would be difficult to restructure the code to not do this.

MozReview-Commit-ID: L1GbZnf4825

--HG--
extra : rebase_source : 3bc2deb24e282f4a76f0a270d28771016052f9ec
2017-04-30 14:48:17 +08:00
Iris Hsiao 0a6db9e69f 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 d3acda35aa Bug 1356103 - Part 9: Use a PostTraversalTask to deal with downloadable fonts in gfxUserFontSet. r=bholley,jfkthame
Here we add a new UserFontLoadState value, STATUS_LOAD_PENDING, which
represents the state just after a gfxUserFontEntry's url()-valued source
would being loading, except that we can't start the load due to being
on a Servo style worker thread.  In that case, we defer the work of
initiating the load until just after the Servo traversal is finished.

URLs that can normally be loaded synchronously, such as data: URLs
and script-implemented protocols marked as synchronous, must be
handled asynchronously when encountered during Servo traversal, since
various main-thread only work (in FontFaceSet::SyncLoadFontData) must
happen.  This is a user visible change from stock Gecko, but should
only happen when font metrics for a data: URL font are requested
due to ch/ex unit resolution when layout hasn't previously requested
the font load.  Hopefully nobody relies on synchronous resolution of
ch/ex units with data: URLs.

We unfortunately also can't pick gfxUserFontEntry objects out of the
UserFontCache during Servo traversal, since validating the cache
entry involves doing content policy checking, which is not thread-safe
(due in part to taking strong references to nsIPrincipals).

Platform fonts and ArrayBuffer-backed DOM FontFace objects continue
to be handled synchronously.

The PostTraversalTask does not take a strong reference to the
gfxUserFontEntry object, since it is held on to by the DOM FontFace
object, which itself won't go away before the PostTraversalTask
is run.

MozReview-Commit-ID: J9ODLsusrNV

--HG--
extra : rebase_source : 1651e2917bd31b87fc1c1be94b0eced1273df86a
2017-04-30 14:57:25 +08:00
Cameron McCormack 2a3418fdce Bug 1356103 - Part 6: Make gfxUserFontSet refcounting thread-safe. r=bholley
As with a few other gfx* font-related classes, during font metrics
calculations we end up taking strong references to gfxUserFontSet,
and it would be difficult to restructure the code to not do this.

MozReview-Commit-ID: L1GbZnf4825

--HG--
extra : rebase_source : bfd83b02cceec747dc4f4f021eff205e7aaa2b69
2017-04-30 14:48:17 +08:00
Manish Goregaokar 6be22491bd Bug 1341724 - Part 4: stylo: Make font metrics usage threadsafe; r=heycam
MozReview-Commit-ID: 3EqpUy09UuI
2017-04-10 17:06:19 +08:00
Jeremy Chen c41d8342dd Bug 1347819 - change nsFont::languageOverride to store uint32_t directly. r=jfkthame
Since font-language-override can only have a single three-letter tag, and it is
eventually converted to uint32_t while creating gfxFontStyle, we should be able
to move the conversion ahead, to an earlier stage.

In this patch, we move the ParseFontLanguageOverride to nsRuleNode, so we could
do the nsString-to-uint32_t conversion during computing time.

MozReview-Commit-ID: LA4Bv3wV7K

--HG--
extra : rebase_source : 48059a9913d58363f78dea59b1b7811d9f038352
2017-03-23 21:59:55 +08:00
Jeff Muizelaar da3210576b Bug 1119128. Eliminate gfxPangoFontGroup and gfxFontconfigUtils. r=lsalzman 2017-03-22 14:58:19 -04:00
Nicholas Nethercote c2306345d5 Bug 1297658 - Avoid unnecessary checking in memory reporters. r=erahm.
This patch removes checking of all the callback calls in memory reporter
CollectReport() functions, because it's not useful.

The patch also does some associated clean-up.

- Replaces some uses of nsIMemoryReporterCallback with the preferred
  nsIHandleReportCallback typedef.

- Replaces aCallback/aCb/aClosure with aHandleRepor/aData for CollectReports()
  parameter names, for consistency.

- Adds MOZ_MUST_USE/[must_use] in a few places in nsIMemoryReporter.idl.

- Uses the MOZ_COLLECT_REPORT macro in all suitable places.

Overall the patch reduces code size by ~300 lines and reduces the size of
libxul by about 37 KiB on my Linux64 builds.

--HG--
extra : rebase_source : e94323614bd10463a0c5134a7276238a7ca1cf23
2016-08-24 15:23:45 +10:00
Jonathan Kew fb5e0a3be3 Bug 1268021 - Implement memory reporting for the user-font cache. r=njn 2016-05-03 12:14:34 +01:00
Jonathan Kew 1be69b60f6 Backout 86bea1a981f9 (bug 1268021) for causing Windows crashes on a CLOSED TREE. 2016-05-03 13:36:28 +01:00
Jonathan Kew a4e2a6456b Bug 1268878 - Include various of gfxFontEntry's sub-objects in memory reporting. r=njn 2016-05-03 12:14:35 +01:00
Jonathan Kew d1f897d72c Bug 1268021 - Implement memory reporting for the user-font cache. r=njn 2016-05-03 12:14:34 +01:00
Jonathan Kew 28a9e2cf14 Bug 1265452 - Remove use of nsAutoPtr from gfx/thebes. r=jrmuizel 2016-04-15 20:45:37 +01:00
Christoph Kerschbaumer 9ab1648f67 Bug 1195172 - Use channel->ascynOpen2 layout/style/FontFaceSet.cpp (r=bz,cam) 2016-03-01 13:06:13 -08:00
John Daggett 535864fddf Bug 1188802 - only rebuild local webfont rules when needed. r=heycam 2016-02-08 10:11:39 +09:00
Carsten "Tomcat" Book 745be97723 Backed out changeset 2257088c6b04 (bug 1188802) 2016-02-05 11:19:11 +01:00
John Daggett a4c7835ada Bug 1188802 - only rebuild local webfont rules when needed. r=heycam 2016-02-05 16:46:27 +09:00
John Daggett ade0c810ea Bug 1157064 - implementation of font-display. r=heycam,khuey 2016-01-07 14:03:05 +09:00
John Daggett 14ad4bf8f6 Bug 1224975 - add telemetry for font loading. r=m_kato
--HG--
extra : rebase_source : ef31e321366f6edcc465ad9a4474c1e8287a6054
2015-11-25 14:48:16 +09:00
Nicholas Nethercote d3b5a35826 Bug 1219476 (part 1) - Replace PRLogModuleInfo usage with LazyLogModule in gfx/. r=erahm.
--HG--
extra : rebase_source : 387c369dfdca8e5cca98dacf9ef97cd0b298d0c9
2015-10-28 20:45:42 -07:00
John Daggett f4458274bd Bug 543715 p1 - distinguish between italic and oblique. r=jfkthame 2015-10-19 11:16:43 +09:00
Phil Ringnalda adfbc1f710 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 72b6bcd6d6 Bug 543715 p1 - distinguish between italic and oblique. r=jfkthame 2015-10-18 22:17:46 +09:00
Nathan Froyd 01583602a9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi

--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 01:24:48 -04:00
Cameron McCormack 4872fb60dc Bug 1163877 - Part 3: Update state on, and reflow documents for, all FontFaceSets that contain a FontFace whose user font entry updated. r=jdaggett 2015-10-16 17:10:14 +11:00
John Daggett 8995363ec7 Bug 1185812 - rejigger the ordering of fonts within a family to avoid obscure faces. r=heycam 2015-09-02 12:24:30 +09:00
Nicholas Nethercote 6903c4d3aa Bug 1182962 (part 1) - Use nsTHashtable::Iterator in gfxUserFontSet. r=jfkthame.
--HG--
extra : rebase_source : 33b6afcb2d314033964d8443ccb335eb8106d00f
2015-07-13 17:41:12 -07:00
Michael Layzell bbe7e606d2 Bug 1168172 - Mark gfxUserFontEntry::mLoader as MOZ_NON_OWNING_REF. r=jtd
--HG--
extra : rebase_source : b0fb8094a9a089170a7538d5300b20c026e71a3d
2015-05-25 11:30:00 -04:00
Michael Layzell 6e3a4bba77 Bug 1167697 - Mark refs to gfxFontEntry in UserFontCache as MOZ_NON_OWNING_REF. r=jtd
--HG--
extra : rebase_source : 80dc502bcd131927ff105cbe97ec5995b630b774
2015-05-22 11:47:00 -04:00
Eric Rahm 67b91ff53a Bug 1162748 - Remove instances of #ifdef PR_LOGGING in graphics. r=froydnj
PR_LOGGING is now always defined, we can remove #ifdefs checking for it.
2015-05-08 14:37:01 -07:00
Mike Hommey 924c9eb636 Bug 1134923 - Remove NS_Alloc/NS_Realloc/NS_Free. r=nfroyd
They are kept around for the sake of the standalone glue, which is used
for e.g. webapprt, which doesn't have direct access to jemalloc, and thus
still needs a wrapper to go through the xpcom function list and get to
jemalloc from there.
2015-05-01 09:40:30 +09:00
John Daggett 16051fe356 Bug 935862 p2 - add various userfont lookup methods. r=heycam 2015-03-06 17:44:18 +09:00
Sid Stamm 7235c3b5b2 Bug 704320 - Add referrer policy support to stylesheet and CSS loads and fonts. (r=bz) 2014-11-18 08:46:47 -05:00
John Daggett 6f795700cb Bug 475891 - support unicode-range when matching userfonts (non-linux). r=jfkthame 2014-11-06 13:42:50 +09:00
John Daggett 556a622173 Bug 1083599 - fixup small problem with userfont logging. r=m_kato 2014-10-17 09:15:29 +09:00
Jonathan Kew 21fd93a194 Bug 1064737 pt 3 - Read metadata from a WOFF2 font if present. r=jdaggett 2014-10-04 11:46:54 +01:00
Jonathan Kew 0d2cfaf334 Bug 1064737 pt 2 - Support for WOFF2 as a webfont format. r=jdaggett 2014-10-04 11:36:05 +01:00
Cameron McCormack 103bb77e68 Bug 1028497 - Part 25: Support loading of fonts from ArrayBuffer{,View}s. r=bzbarsky,jdaggett 2014-10-02 12:32:09 +10:00
Cameron McCormack d045185df5 Bug 1028497 - Part 14: Rename some methods to talk about UserFontEntry instead of FontFace. r=jdaggett
How that we have a class named "FontFace", it's a bit confusing for some
of the gfxUserFontSet methods to have "FontFace" in their names, so I'm
renaming them to mention "UserFontEntry" instead.
2014-10-02 12:32:07 +10:00
Cameron McCormack f5bcec5617 Bug 1028497 - Part 9: Implement FontFace.status. r=jdaggett
We make gfxUserFontEntry::SetLoadState virtual so that we can hook into
changes and update FontFace::mStatus.  We can't just reflect the
gfxUserFontEntry's value in FontFace::Status() since the spec has
requirements about when exactly the status is set.
2014-10-02 12:32:06 +10:00
Cameron McCormack 4649da6d47 Bug 1028497 - Part 6: Have a FontFace::Entry class extending gfxUserFontEntry that can inform the FontFaceSet about loading. r=jdaggett
We can't make FontFace inherit from gfxUserFontEntry, since the former
is cycle collected.  So instead, we have a small class that inherits
from it that will override its virtual methods and forward things on to
the FontFace object.

We make gfxUserFontSet::CreateFontFace virtual so we can override it to
produce instances of our gfxUserFontEntry subclass.
2014-10-02 12:32:06 +10:00
Cameron McCormack f5f01b6fc2 Bug 1028497 - Part 4: Move the nsUserFontSet object into FontFaceSet. r=jdaggett
This (a) moves ownership of the gfxUserFontSet into FontFaceSet, (b) moves
nearly all of the functionality of nsUserFontSet into FontFaceSet, and (c)
adds a class that inherits from gfxUserFontSet so that we can override some
of its virtual functions and delegate them to the FontFaceSet.
2014-10-02 12:32:05 +10:00
John Daggett b0dafb656a Bug 998869 part 5 - lazily load userfonts (non-linux). r=jfkthame 2014-09-25 12:16:54 +09:00
John Daggett 245a756e02 Bug 998869 part 3 - rename userfont class methods. r=heycam 2014-09-25 12:16:53 +09:00
John Daggett 123c797bde Bug 1062058 part 3 - make userfont entry a container of the platform font entry. r=heycam 2014-09-08 16:23:20 +09:00
John Daggett 53967d717d Bug 1062058 part 2 - rename userfont classes and adjust flags. r=heycam 2014-09-08 16:23:20 +09:00
John Daggett 6f2c0ee7ec Bug 1062058 part 1 - avoid passing around proxy font entry object. r=heycam 2014-09-08 16:23:19 +09:00
Frédéric Wang 3ca9ad3ae3 Bug 1057488 - Part 3: Update OTS to 97d043dd8977751835ca8d33d773ae8416e456d5. r=jfkthame
--HG--
extra : rebase_source : a040d22b1758ae60b7bbafecbe35d0dc9891365a
2014-08-23 10:12:00 -04:00