Commit graph

1217 commits

Author SHA1 Message Date
David Major
c772f99f60 Bug 1403220 followup: Limit the PGO workaround to just where it's needed.
No rush merging this one around. Feel free to back this out if the crashes come back.

--HG--
extra : rebase_source : 5d850c0b739e8a47830a65da939241e495a1f7bf
2017-09-28 13:27:01 -04:00
David Major
cb46df4d86 Bug 1403220 - De-optimize some font functions to work around an MSVC PGO crash. r+a=RyanVM 2017-09-27 10:17:00 -04:00
Alexis Beingessner
cece98d71c Bug 1403259 - TextDrawTarget: fallback on -webrender-text-stroke. r=jrmuizel
MozReview-Commit-ID: 9taTLk0RLQq

--HG--
extra : rebase_source : 2c70334438ba9f59d030096656970362cbf0a7a2
2017-09-26 14:12:12 -04:00
Alexis Beingessner
c9ae89e98d Bug 1400382 - Factor out text WebRenderCommand code to TextDrawTarget. r=mstange
MozReview-Commit-ID: EQtFvLQCT2U

--HG--
extra : rebase_source : 8774f6723250cbcb59eb62382b24767d9f9b8f75
2017-09-21 15:15:58 -04:00
Alexis Beingessner
9022c22b82 Bug 1400382 - Replace explicit TextDrawTarget passing with cast-based system. r=mstange
MozReview-Commit-ID: EQtFvLQCT2U

--HG--
extra : rebase_source : 1fff1b545c18d42403cf9c30172528e553a6af48
2017-09-21 15:15:58 -04:00
Alexis Beingessner
d608afab8a Bug 1400382 - Defer TextDrawTarget analysis until GetLayerState. r=jrmuizel
This ensures the mutations TextOverflow does have already occured when we compute contents.

This also reverts my previous folded opacity patch, as this also handles that case.

MozReview-Commit-ID: 6A4F98GGHyL

--HG--
extra : rebase_source : 73c67ccf20f44ea808345a1146307fe9b9d9c3b1
2017-09-20 20:11:12 -04:00
Morris Tseng
ce9b629335 Bug 1392200 - Add backface-visibility support for layers-free mode. r=kats
For layers-full mode, we set the backface-visibility to visible because
visibility would be handled by FLB and layers.

MozReview-Commit-ID: CUbeUabfC7K
2017-09-21 14:41:38 +08:00
Nicolas Silva
61546da339 Bug 1393031 - Remove unused nsTArray<WebRenderParentCommand>& parameter all over the place. r=jrmuizel 2017-09-20 13:36:53 +02:00
Jonathan Watt
107bd0b650 Bug 1399824, part 2 - Always use nsIFrame::AddStateBits instead of manual bit twiddling. r=xidorn
MozReview-Commit-ID: JoEiQQI2kZ5
2017-08-24 12:09:42 +01:00
Jonathan Watt
9d21fb29ff Bug 1399824, part 1 - Always use nsIFrame::RemoveStateBits instead of manual bit twiddling. r=xidorn
MozReview-Commit-ID: KynEge1U4aS
2017-08-24 10:55:28 +01:00
Ting-Yu Lin
a4c8c11d14 Bug 1341009 - Convert nsReflowStatus::Reset() to nsReflowStatus::IsEmpty() assertion in ReflowText(). r=dholbert
MozReview-Commit-ID: Fa1Dq7xLP3n

--HG--
extra : rebase_source : 00fa0460f78b9fd81f8dba6291420f7ba40ed951
2017-09-14 16:22:21 +08:00
Ting-Yu Lin
2e869d8f3d Bug 1341009 - Add nsReflowStatus::IsEmpty() assertions to all nsIFrame::Reflow() methods and some reflow helpers, and remove unneeded Reset(). r=dholbert
nsReflowStatus::IsEmpty() assertions are added after DISPLAY_REFLOW in the
beginning of the Reflow().

A few Reflow() implementations have Reset() calls at the end which are left
in place by this patch (with an explanatory comment added to each). These
ending Reset()s are only needed for cases where a non-splittable frame
passes its own nsReflowStatus to a child's reflow method. Just in case the
child leaves a "not fully complete" value in the nsReflowStatus, the
non-splittable parent frame must clear out the nsReflowStatus before
returning, so that its own parent doesn't then try to split it.

MozReview-Commit-ID: 6Jj3jfMAqj4

--HG--
extra : rebase_source : e1fe6a775ad97e16a6d7cc224634ff962ccb0fbf
2017-09-13 18:00:25 +08:00
Alexis Beingessner
952cdf7351 Bug 1399564 - properly thread through selection-specific decorations to WR. r=jrmuizel
MozReview-Commit-ID: 7prde0BsOFL

--HG--
extra : rebase_source : 188e7b75f7fc93ca2f87a8b3439696a28e3fb431
2017-09-13 13:25:42 -04:00
Sebastian Hengst
ec66bbd3e1 merge mozilla-inbound to mozilla-central. r=merge a=merge
MozReview-Commit-ID: 4dRrVdftJVy
2017-09-15 11:05:11 +02:00
Sebastian Hengst
d27b05e04e Backed out changeset f34a52244cf9 (bug 1393031) 2017-09-14 23:17:35 +02:00
Markus Stange
ae927d3f44 Bug 1387594 - Set the font smoothing background color based on the -moz-font-smoothing-background-color property. r=mattwoodrow
MozReview-Commit-ID: B3PVIvMswf8
2017-09-14 23:09:47 +02:00
Alexis Beingessner
6b38993c8b Bug 1399274 - Block invisible text optimizations when using WebRender. r=jrmuizel
Mostly just threading the TextDrawTarget deeper into the code to use a boolean.
A lot of places are trying to optimize away invisible text!

MozReview-Commit-ID: 89sDAwUv0HA

--HG--
extra : rebase_source : 8d800702232aec6626a33f2d6be893708d0bbfee
2017-09-13 14:05:51 -04:00
Miko Mynttinen
351756e478 Bug 1359584 - Part 3: Improve nsDisplayItem const correctness and fix surrounding whitespace r=mstange
MozReview-Commit-ID: 3GkWiu6C4Zo

--HG--
extra : rebase_source : 1423442cd723b8a052d183394dc5f5ef272a5272
2017-08-24 17:09:44 +02:00
Miko Mynttinen
ce08697502 Bug 1359584 - Part 1: Move mDisableSubpixelAA to nsDisplayItem r=mstange
MozReview-Commit-ID: 70169AFRmjq

--HG--
extra : rebase_source : 9c46e40700430e8286ab8e5b2f986e660c293101
2017-08-24 14:45:21 +02:00
Alexis Beingessner
39e87f69a6 Bug 1395748 - Fix text selection shadow interaction. r=jrmuizel
Selections in gecko are used to hack in style changes to subsets of text frames.
Mostly this works fine because decorations don't care where they are, and
textRunFragments already exist to do style changes midFrame. However we mishandled
shadows because we were assuming they applied to the entire run, which isn't
the case when shadows are involved.

Applying shadows to everything was desirable because the way nsTextFrame is written,
it's difficult for us to associate the glyphs and decorations with a "range".
However the selections iterator provides a natural grouping, so we use that.

The result is that TextDrawTarget effectively becomes an array of what TextDrawTarget
used to be (now called SelectedTextRunFragment). Everything else is just fallout
of this change.

MozReview-Commit-ID: 5GWPruo6daW

--HG--
extra : rebase_source : 8e1c1d61e43151ee6651f8c6cfbcb0912262df56
2017-09-12 16:50:44 -04:00
KuoE0
e629f92818 Bug 1229979 - (Part 1) Make the color of decoration line shadow be as same as the color of the text shadow. r=jfkthame
Multi-color shadow is not allowed in spec. We could use the same color
of the text as the color of the decoration line when we paint the
shadow.

MozReview-Commit-ID: AK9NoseSE0h

--HG--
extra : rebase_source : 48a84e73a7ee76b615c255a440cbe119fa8f56f0
2017-09-06 14:31:36 +08:00
Sebastian Hengst
d7fd3d4096 Backed out changeset 274175ce0863 (bug 1229979) for failing reftest layout/reftests/text-shadow/decorations-multiple-zorder.html, at least on Windows and Android. r=backout 2017-09-08 10:56:24 +02:00
KuoE0
a3a2484069 Bug 1229979 - (Part 1) Make the color of decoration line shadow be as same as the color of the text shadow. r=jfkthame
Multi-color shadow is not allowed in spec. We could use the same color
of the text as the color of the decoration line when we paint the
shadow.

MozReview-Commit-ID: AK9NoseSE0h

--HG--
extra : rebase_source : 12b0aa45f5dbb938a35271dcadaa664ae4a82c1e
2017-09-06 14:31:36 +08:00
Alexis Beingessner
3ce36bee8a Bug 1395729 - Disable frame merging for nsTextFrame. r=mattwoodrow
MozReview-Commit-ID: C0kq5IYgUMG

--HG--
extra : rebase_source : 554424e067dba4c5ed39712a51f48f79912e6e6a
2017-09-06 13:49:31 -04:00
Daniel Holbert
d95e955d65 Bug 1393098 part 1: Adjust nsTextFrame::CharacterDataChanged to skip redundant requests for reflow, via a new boolean member-var. r=jfkthame
Some benchmarks & use-cases cause nsTextFrame::CharacterDataChanged to be
called multiple times for the same text between reflows.  Each call triggers a
slightly-expensive call to shell->FrameNeedsReflow(), for each affected
nsTextFrame in the continuation chain. (OK, it's not quite that bad -- we
skip the FrameNeedsReflow calls for siblings, since the ancestor
notifications/tweaks would all be the same.)

This patch makes us set a flag on the nsTextFrame to indicate that a reflow has
*already* been requested by this chunk of code, and we'll now use that to skip
the FrameNeedsReflow() call (and the dirty-bit-setting for siblings) on the
next invocation. And we clear this new flag when the pending reflow actually
happens.

This shouldn't change behavior in a web-observable way, but it should speed
things up by removing redundant work.

MozReview-Commit-ID: 5nmbZHEFFDi

--HG--
extra : rebase_source : 1f40abbc9eb90713095d2aff63f5a54a634e5aea
2017-08-31 10:45:38 -07:00
Daniel Holbert
c81d05b3b7 Bug 1393098 part 0: Refactor logic (add helper bool & reduce GetParent calls), in nsTextFrame::CharacterDataChanged. r=jfkthame
This patch doesn't affect behavior at all -- it just adjusts the logic
slightly. Specifically, this patch:

 (a) Changes some code that currently tracks a frame, to now instead track that
     frame's parent, since we only ever call GetParent() on it anyway.
 (b) Drops a null-check that becomes unnecessary as a result of that
     change. (It was only there to protect us from calling GetParent() on a
     null pointer during the first loop iteration, and now that's not a risk
     since we're tracking the parent itself, and a null value will fail the
     equality comparison and do the right thing.)
 (c) Captures the "are ancestors already aware of a reflow request for my
     subtree" if-condition in a named boolean helper-variable.
 (d) Adds/improves documentation.

MozReview-Commit-ID: 7dEflfiERYB

--HG--
extra : rebase_source : 0981952a6fa08f6c995ea6e21dd0cef4f6934bdc
2017-08-31 10:45:36 -07:00
Alexis Beingessner
bfdaac7f5c Bug 1395098 - Apply folded alpha to text when using advanced layers r=jrmuizel
MozReview-Commit-ID: 6crHThEP6Ha

--HG--
extra : rebase_source : 9dd0c286b400b22803b1a52ac0822738ef17d904
2017-08-30 13:18:09 -04:00
Masayuki Nakano
3bd4299525 Bug 1393348 - part2: nsISelectionController::SELECTION_* should be sequential integer values r=smaug
nsISelectionController::SELECTION_* are declared as bit-mask.  However, no
methods of nsISelectionController treat them as bit-mask and these
values need a switch statement in nsFrameSelection to convert SelectionType to
array index of nsFrameSelection::mDOMSelections because it's too big to create
an array to do it.  Additionally, this conversion appears profile of
attachment 8848015.

So, now, we should declare these values as sequential integer values.

However, only nsTextFrame uses these values as bit-mask.  Therefore, this patch
adds new type, SelectionTypeMask and creates new inline method,
ToSelectionTypeMask(SelectionType), to retrieve mask value for a SelectionType.

MozReview-Commit-ID: 5Za8mA6iu4

--HG--
extra : rebase_source : 86617c1f5fa23166458f4353cb834f9e7c5b131b
2017-08-24 19:14:04 +09:00
Ethan Lin
d9862646f9 Bug 1391996 - Move some checks from nsDisplayText::GetLayerState to constructor to prevent ambiguous status. r=jrmuizel
MozReview-Commit-ID: QPSIqLz56p

--HG--
extra : rebase_source : 1c4db4b0111126b79f4d3e5ab8f693545f1cbd70
2017-08-21 14:52:31 +08:00
Alexis Beingessner
9c4535798f Bug 1357545 - handle text-shadows/decorations with webrender (layers-free) r=jrmuizel
This replaces our DrawTargetCapture hack with a similar but more powerful TextDrawTarget
hack. The old design had several limitations:

* It couldn't handle shadows
* It couldn't handle selections
* It couldn't handle font/color changes in a single text-run
* It couldn't handle decorations (underline, overline, line-through)

Mostly this was a consequence of the fact that it only modified the start and end
of the rendering algorithm, and therefore couldn't distinguish draw calls for different
parts of the text.

This new design is based on a similar principle as DrawTargetCapture, but also passes
down the TextDrawTarget in the drawing arguments, so that the drawing algorithm can
notify us of changes in phase (e.g. "now we're doing underlines"). This also lets us
directly pass data to TextDrawTarget when possible (as is done for shadows and selections).

In doing this, I also improved the logic copied from ContainsOnlyColoredGlyphs to handle
changes in font/color mid-text-run (which can happen because of font fallback).

The end result is:

* We handle all shadows natively
* We handle all selections natively
* We handle all decorations natively
* We handle font/color changes in a single text-run
    * Although we still hackily intercept draw calls
    * But we don't need to buffer commands, reducing total memcopies

In addition, this change integrates webrender's PushTextShadow and PushLine APIs,
which were designed for this use case. This is only done in the layerless path;
WebrenderTextLayer continues to be semantically limited, as we aren't actively
maintaining non-layers-free webrender anymore.

This also doesn't modify TextLayers, to minimize churn. In theory they can be
augmented to support the richer semantics that TextDrawTarget has, but there's
little motivation since the API is largely unused with this change.

MozReview-Commit-ID: 4IjTsSW335h

--HG--
extra : rebase_source : d69f69648ade5c7a8e6bb756f4b8ab9e2543e576
2017-06-19 10:58:28 -04:00
Matt Woodrow
781ec6ffa1 Bug 1388162 - Add a Destroy function to nsDisplayItem to use instead of manually invoking the destructor, this will allow us to recycle them in the future. r=mstange
* * *
[mq]: fix

MozReview-Commit-ID: LUXZAIL73BJ
2017-08-07 16:07:43 +12:00
Matt Woodrow
40f5b92e3b Bug 1388161 - Store the dirty rect on the display list builder rather than passing it as a parameter to BuildDisplayList. r=mstange 2017-08-07 14:23:35 +12:00
Sebastian Hengst
8257b2d113 Backed out changeset 8f2dd8f13b53 (bug 1388161) for failing chrome's test_animation_performance_warning.html | preserve-3d transform. r=backout 2017-08-10 14:40:21 +02:00
Sebastian Hengst
7f85daeb2a Backed out changeset e9985564e081 (bug 1388162) for failing chrome's test_animation_performance_warning.html | preserve-3d transform. r=backout 2017-08-10 14:40:20 +02:00
Matt Woodrow
95f2e31f88 Bug 1388162 - Add a Destroy function to nsDisplayItem to use instead of manually invoking the destructor, this will allow us to recycle them in the future. r=mstange 2017-08-07 16:07:43 +12:00
Matt Woodrow
a3a130b6ff Bug 1388161 - Store the dirty rect on the display list builder rather than passing it as a parameter to BuildDisplayList. r=mstange 2017-08-07 14:23:35 +12:00
Nicolas Silva
2d3eb6cef7 Bug 1393031 - Remove unused nsTArray<WebRenderParentCommand>& parameter all over the place. r=jrmuizel 2017-09-14 20:21:54 +02:00
Nicolas Silva
59e80c8f7e Bug 1393031 - Use shared memory to pass resource update data. r=jrmuizel 2017-09-14 18:48:55 +02:00
Jonathan Kew
5aac49cb16 Bug 1385395 - Use flag bits in the nsGenericDOMDataNode to record whether nsTextFrame-related properties are present, so we don't perform unnecessary hashtable lookups in CharacterDataChanged etc. r=dbaron 2017-08-07 23:13:30 +01:00
Emilio Cobos Álvarez
1a47c01765 Bug 1384542: Move GetParent and IsLinkContext to GeckoStyleContext. r=heycam
MozReview-Commit-ID: C19yGcphixX
2017-07-31 14:32:59 +02:00
Mason Chang
cc5d07571f Bug 1381973 - Lazily create the reference DT in DrawTargetCapture. r=dvander 2017-07-26 15:43:00 -07:00
Mason Chang
b4e1afb9e9 Bug 1365876. Blur text shadows on the CPU. r=lsalzman 2017-07-24 13:48:14 -07:00
Sylvestre Ledru
7c0ae251cd Bug 1381253 - Remove redundant control flow declarations rs=ehsan
MozReview-Commit-ID: FFxP4aMCbOL

--HG--
extra : amend_source : 3aec108430b11048f47ffe19d5da7ac5034770a9
2017-07-15 19:03:04 +02:00
cku
b507182a78 Bug 1381503 - Part 2. Do not use GetWidgetLayerManager if gfxPrefs::LayersAllowTextLayers return false. r=mattwoodrow
Call gfxPrefs::LayersAllowTextLayers before aBuilder->GetWidgetLayerManager,
which is costly. Since LayersAllowTextLayers returns false by default, we are
free of using aBuilder->GetWidgetLayerManager.

MozReview-Commit-ID: Jv1voPYjOad

--HG--
extra : rebase_source : b4892a8800d71eeac5f30b8425954505cade31e6
2017-07-17 23:31:36 +08:00
cku
6f5fc6f921 Bug 1379404 - Part 1. Prevent using gfxContext::Save/Restore in nsTextFrame. r=mattwoodrow
MozReview-Commit-ID: Aob1J2pXNk1

--HG--
extra : rebase_source : 1e60f60167f54728ee5b604a8923fee7baab00f0
2017-07-08 23:52:00 +08:00
Wes Kocher
bfc45b98b9 Merge m-c to inbound, a=merge
MozReview-Commit-ID: 9XdoB5MuVz6
2017-07-05 17:17:41 -07:00
Jeff Muizelaar
b1f8ce5e9c Bug 1378483 - Allow TextLayers in the parent process. r=mattwoodrow.
This fixes text using a painted layer in the Chrome.
2017-07-05 15:38:01 -04:00
Kartikaya Gupta
cad9534e69 Bug 1377090 - Turn gfxMatrix into a typedef for MatrixDouble. r=jrmuizel
Most of this patch is updating a few places that use gfxMatrix to use
the equivalent-but-differently-named functions on MatrixDouble:
- Translate/Rotate/Scale get turned into PreTranslate/PreRotate/PreScale
- Transform(Point) gets turned into TransformPoint(Point)
- gfxMatrix::TransformBounds(gfxRect) gets turned into
  gfxRect::TransformBoundsBy(gfxMatrix).
- gfxMatrix::Transform(gfxRect) gets turned into
  gfxRect::TransformBy(gfxMatrix).
The last two functions are added in this patch as convenience wrappers
to gfxRect instead of Matrix.h because we don't want Matrix.h to "know"
about gfxRect (to avoid adding gecko dependencies on Moz2D). Once we
turn gfxRect into a typedef for RectDouble these will be eliminated
anyway.

MozReview-Commit-ID: BnOjHzmOSKn

--HG--
extra : rebase_source : cf1692d1f0d44a4b05d684a66678739181a426d5
2017-07-05 11:18:49 -04:00
Ethan Lin
82a7c2b5e4 Bug 1372118 - Part3. Implement CreateWebRenderCommands for text, transform and background color. r=jrmuizel, r=kats
MozReview-Commit-ID: JRoSjygSFHc
2017-06-30 17:23:20 -07:00
Masayuki Nakano
5a78a77b68 Bug 1375825 - part2: ContentEventHandler::ExpandToClusterBoundary() should check the return value of nsTextFrame::PeekOffsetCharacter() r=jfkthame
ContentEventHandler::ExpandToClusterBoundary() doesn't check the return value of nsTextFrame::PeekOffsetCharacter().  Therefore, it may set its result to reversed offset. (e.g., when aForward is true and offset is 6, the result may be 5.  When aForward is false and offset is 5, the result may be 6.)

For avoiding that, ContentEventHandler::ExpandToClusterBoundary() should check the result and only when it returns nsIFrame::FOUND, it should compute the proper offset.

On the other hand, it's too bad for ContentEventHandler that nsTextFrame::PeekOffsetCharacter() to return nsIFrame::CONTINUE_UNSELECTABLE when the user-select style is "all" because IME doesn't expect such cases.

Therefore, this patch adds additional argument to nsIFrame::PeekOffsetCharacter(), aOptions which is a struct containing bool members.  The reason why it's not a bit mask enum is, such struct doesn't cause simple mistake at checking the value and the code is shorter.  When mIgnoreUserStyleAll of it is true, this patch makes nsTextFrame not return nsIFrame::CONTINUE_UNSELECTABLE.

MozReview-Commit-ID: ACNNBTP92YZ

--HG--
extra : rebase_source : bd85da902e7fb59135d15514cb20a5599a4a640b
2017-06-29 10:58:16 +09:00
Jonathan Kew
5c78152683 Bug 1371564 - Bustage fix, correct flag name in assertion. no_r=me 2017-06-24 21:50:14 +01:00
Nicholas Nethercote
58786e1ea7 Bug 1375392 - Tweak the PROFILER_LABEL* macros. r=mstange.
This patch makes the following changes to the macros.

- Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside
  classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was
  mostly misused.

- Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is
  universally available now anyway.

- Combines the first two string literal arguments of PROFILER_LABEL and
  PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for
  them to be separate, and it forced a '::' in the label, which isn't always
  appropriate. Also, the meaning of the "name_space" argument was interpreted
  in an interesting variety of ways.

- Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make
  it clearer they construct RAII objects rather than just being function calls.
  (I myself have screwed up the scoping because of this in the past.)

- Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so
  the caller doesn't need to. This makes a *lot* more of the uses fit onto a
  single line.

The patch also makes the following changes to the macro uses (beyond those
required by the changes described above).

- Fixes a bunch of labels that had gotten out of sync with the name of the
  class and/or function that encloses them.

- Removes a useless PROFILER_LABEL use within a trivial scope in
  EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving
  any useful purpose. It also serves as extra evidence that the AUTO_ prefix is
  a good idea.

- Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is
  done within them, instead of at their callsites, because that's a more
  standard way of doing things.

--HG--
extra : rebase_source : 318d1bc6fc1425a94aacbf489dd46e4f83211de4
2017-06-22 17:08:53 +10:00
Xidorn Quan
8c47606640 Bug 1369985 - Look for text run boundary based on transformed text when needed. r=jfkthame
MozReview-Commit-ID: 9wJXia7LBpO

--HG--
extra : rebase_source : 8727d7aa84147d64ab2c5a08d965220acd38fe9e
2017-06-18 11:18:32 +10:00
Alexis Beingessner
adb013669b Bug 1088760 - Remove nsRenderingContext, replacing all of its uses with gfxContext. r=jwatt,jrmuizel
MozReview-Commit-ID: K1WUIOnvazF
2017-06-13 11:00:10 -04:00
Sebastian Hengst
f3bf820bfd Backed out changeset 3d1ce85e6348 (bug 1088760) for bustage, at least on Android at layout/generic/nsPluginFrame.cpp:1612. r=backout 2017-06-13 00:30:03 +02:00
Alexis Beingessner
c75211cb95 Bug 1088760 - Remove nsRenderingContext, replacing all of its uses with gfxContext. r=jwatt,jrmuizel
MozReview-Commit-ID: K1WUIOnvazF
2017-06-12 17:32:48 -04:00
Carsten "Tomcat" Book
efccdfdb0a merge mozilla-inbound to mozilla-central a=merge 2017-06-02 14:22:17 +02:00
Jeff Hajewski
12f7c1e837 Bug 1369448 - Change NS_STYLE_WHITESPACE macro definitions to enum class; r=manishearth
MozReview-Commit-ID: HUXYWXk8eiI
2017-06-01 15:37:22 -07:00
Lee Salzman
a025094cbf Bug 1305036 - implement nsDisplayTextOverflowMarker::GetComponentAlphaBounds to handle ellipsis with subpixel AA. r=mstange
MozReview-Commit-ID: Bedd3JIvzKy
2017-06-01 17:08:54 -04:00
Mats Palmgren
357e4b9560 bug 1368547 part 2 - Remove nsFrameManager/PresShell methods dealing with placeholders and introduce a nsIFrame::GetPlaceholderFrame() convenience method. r=jfkthame
MozReview-Commit-ID: GBUiUBqJxhQ
2017-05-31 21:29:49 +02:00
Jonathan Kew
a8f81efd8e Bug 1365982 - Attach frame properties to each frame instead of looking them up in a hashtable on the prescontext. r=mats
--HG--
rename : layout/base/FramePropertyTable.cpp => layout/base/FrameProperties.cpp
rename : layout/base/FramePropertyTable.h => layout/base/FrameProperties.h
2017-05-27 12:36:00 +01:00
Mats Palmgren
1242172259 Bug 1364805 part 2 - Add a nsIFrame::mClass field and propagate the concrete class' value up the ctor chain. r=jfkthame
nsIFrame::mClass is of type enum class nsQueryFrame::ClassID which is
a strict subset of the nsQueryFrame::FrameIID values.  For a concrete
frame class, its FrameIID is the same numeric value as its ClassID.

MozReview-Commit-ID: 1N0AkCGo1ol
2017-05-26 12:11:11 +02:00
Mats Palmgren
ec6b1ef065 Bug 1364805 part 1 - Make every concrete frame class be a NS_DECL_QUERYFRAME_TARGET. r=jfkthame
MozReview-Commit-ID: Gy9gcEYupeY
2017-05-26 12:11:11 +02:00
Timothy Guan-tin Chien
d40c6eb2c0 Bug 1365869 - Bug 1365869 - Better contrast comparison for Selection#setColors(). r=masayuki
Instead of hardcoding a color-to-compare, compare the contrast between
the text and the background color v.s. text and the alternative
background color, and use the color that has better contrast.

MozReview-Commit-ID: D90047Y0Xst

--HG--
extra : rebase_source : cc0bd290930dbb11f464aa434b7606bab268627a
2017-05-18 16:49:51 +08:00
Timothy Guan-tin Chien
1d08bd439b Bug 1360500 - Allow custom colors on find selection type selections. r=jaws,masayuki,smaug
This patch implements chrome-only Selection#setColors and
Selection#resetColors methods, and use it to set the background color of
the preferences search highlight.

MozReview-Commit-ID: 2U92aBCAyeh

--HG--
extra : rebase_source : b07af1f37309d8184584b298a720cd5c1382929a
2017-05-10 10:48:50 -04:00
Jonathan Kew
4b5525bbf7 Bug 1362167 - Use strongly-typed enum classes instead of generic uint16_t fields for the gfxShapedText and gfxTextRun flags. r=jrmuizel 2017-05-04 22:27:05 +01:00
Jonathan Kew
6fc5313103 Bug 1362167 - Split gfxShapedText.mFlags into two 16-bit flags fields, and arrange storage more compactly to reduce size of gfxShapedWord and gfxTextRun objects. r=jrmuizel 2017-05-04 22:25:16 +01:00
Mats Palmgren
43e71f49d2 Bug 1361478 - Add a ctor for FrameTextTraversal that initializes all members. r=jfkthame
MozReview-Commit-ID: 9XdG2up2yTi
2017-05-03 22:19:14 +02:00
Emilio Cobos Álvarez
23bce99ae1 Bug 1361051: rename mozilla::FrameType to mozilla::LayoutFrameType. r=xidorn
This avoids conflicts with mozilla::dom::FrameType.

MozReview-Commit-ID: 7aEMbHRaTFk

--HG--
extra : rebase_source : 2d01321f5ce0ec8c0e3f70984674f82678034b3c
2017-05-01 19:32:52 +02:00
Emilio Cobos Álvarez
e44543aad4 Bug 1360241: Devirtualize nsIFrame::GetType. r=heycam
MozReview-Commit-ID: 5Nzhyta5Hle

--HG--
extra : rebase_source : c2e9d4bfb9239f5e851d110cd7dff98c1e1a8d8b
2017-04-30 17:30:08 +02:00
Emilio Cobos Álvarez
68de453c9b Bug 1360508: Use the parent's frame style context when handling text-combine. r=xidorn
Instead of the parent style context itself. This also fixes bug 1360530.

It's not clear what should we use in this case, it depends on the resolution in
[1] and [2].

While those get resolved, this is probably ok, and gets rid of the only
styleContext->GetParent() outside nsRuleNode.

[1]: https://github.com/w3c/csswg-drafts/issues/1249
[2]: https://github.com/w3c/csswg-drafts/issues/1281

MozReview-Commit-ID: LSOgFCwQi1W
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-04-28 20:18:04 +02:00
Ethan Lin
e7c48eaf73 Bug 1357003 - Keep original layer state for basic layer manager when enabling advanced layer. r=mattwoodrow
--HG--
extra : rebase_source : 75540e18973d788e4e076aa3bdfa8a26036b2269
2017-04-21 23:11:38 +08:00
Evelyn Hung
895079a961 Bug 1355595 - Simplify the default font size calculation; r=dbaron
When calculating the thickness of the spellchecker underline, we can
directly use aPresContext to get default font size, instead of creating
a temporary nsStyleFont object. nsStyleFont does more work than default
font size calculation, and destructing its member mFont object is
expensive (see bug 1355600), so it's better to avoid it on this hot path.

MozReview-Commit-ID: GSvnZHULtL5

--HG--
extra : rebase_source : bf301c74933cf19dac45b52ff0b8b3e3675a9b1b
2017-04-11 18:13:31 -04:00
Lee Salzman
a168dcdbf3 Bug 1348980 - implement UnscaledFont API for Moz2D and thebes. r=jfkthame 2017-04-06 17:41:02 -04:00
L. David Baron
f56a065e7d Bug 1353187 - Give frame properties the const-ness semantics of member variables. r=dholbert
This makes it so that, given a |const nsIFrame*|, a caller can retrieve
properties but not set or remove them, but with an |nsIFrame*| all
operations are allowed.  I believe this is sensible since properties act
as extended member variables for things that are needed rarely, and
these are the const-ness semantics of member variables.

This also avoids the need for const_cast<nsIFrame*> to cast away const
in the following patch, which guards property access with a frame state
bit.

MozReview-Commit-ID: IJ9JnGzdH51

--HG--
extra : transplant_source : %D4%DF%04%91_q%E6%CF%B3N%82%2C%A5%CB0%3A%B6%810%ED
2017-04-04 20:59:21 -07:00
Carsten "Tomcat" Book
358125cbde Backed out changeset a86c4218ca5f (bug 1353187) 2017-04-04 09:54:51 +02:00
L. David Baron
c2af2e1613 Bug 1353187 - Give frame properties the const-ness semantics of member variables. r=dholbert
This makes it so that, given a |const nsIFrame*|, a caller can retrieve
properties but not set or remove them, but with an |nsIFrame*| all
operations are allowed.  I believe this is sensible since properties act
as extended member variables for things that are needed rarely, and
these are the const-ness semantics of member variables.

This also avoids the need for const_cast<nsIFrame*> to cast away const
in the following patch, which guards property access with a frame state
bit.

MozReview-Commit-ID: IJ9JnGzdH51

--HG--
extra : transplant_source : %91%D6%C7%01hC%B3z%90%B6%93%93qcAK%CB%09%D6z
2017-04-03 20:43:30 -07:00
cku
a52259bf72 Bug 1349462 - Part 1. Rename IsSVGText as IsInSVGTextSubtree. r=heycam
MozReview-Commit-ID: LTo6c8tTtaf

--HG--
extra : rebase_source : bc6913c42cca141d7a3098fdd4dcc72fbf146b5a
2017-03-23 15:29:11 +08:00
Jonathan Kew
f1fe2e00d1 Bug 1348596 - Back out incorrectly-landed (and unreviewed) change to ContinueTextRunAcrossFrames that was mistakenly pushed. r=dbaron 2017-03-20 09:44:02 +00:00
Jeremy Chen
9a60f77d80 Bug 1343516 - clean up the mess of PropertyProvider and its implementations. r=jfkthame
The cleanup work includes:

part 1: make all methods 'const' for the abstract class of PropertyProvider.

part 2: make nsFontMetrics's StubPropertyProvider final.

part 3: make nsTextFrame's PropertyProvider final.

  Make some methods 'const' and some variables 'mutable', so we could let all the
  overridden methods stay const.

  We also need to make the pass-in parameter of gfxFontGroup's GetHyphenWidth const.
  Note that the comment of GetHyphenWidth seem outdated, so I fixed it as well.

part 4: make the member variables in nsTextFrame's PropertyProvider to be 'const'.

  Make all the member variables 'const' except mStart, mLength,
  mJustificationArrayStart, and mJustificationSpacings.

  The static function AdvanceToNextTab is fixed since we only use 2 of the 4 parameters.

part 5: coding style fix for nsTextFrame's PropertyProvider.

MozReview-Commit-ID: 1kbWPwx27aQ
2017-03-17 18:53:15 +08:00
Brad Werth
79fcb7ba0d Bug 1343695 Part 2: Narrow an overly restrictive assert in GetRenderedText. r=mats
MozReview-Commit-ID: EuxNJmKPxok

--HG--
extra : rebase_source : b77018ea2417b0778fb51ba579d8c4baeeaf06a5
2017-03-14 14:27:30 -07:00
Jeremy Chen
0316fede8c Bug 1056516 - let auto hyphen honor manual hyphen when hyphens:auto is set. r=jfkthame
MozReview-Commit-ID: F3ALAJRHned
2017-03-13 12:54:05 +08:00
Jeremy Chen
2e09040e6e Bug 1056516 - use HyphenType to store different types of hyphenations. r=jfkthame
MozReview-Commit-ID: AX3NNDS4hxP
2017-03-13 12:54:05 +08:00
Jeremy Chen
17dca35346 Bug 1056516 - use AutoTArray for hyphenBuffer in BreakAndMeasureText. r=jfkthame
MozReview-Commit-ID: 2sFqlGdoCcm
2017-03-13 12:54:04 +08:00
Ryan VanderMeulen
b035220d0f Backed out 5 changesets (bug 1056516) for suspicion of causing Linux/OSX topcrashes.
Backed out changeset 70586dbb509c (bug 1056516)
Backed out changeset 753067cc11f7 (bug 1056516)
Backed out changeset 0bcf5f91b014 (bug 1056516)
Backed out changeset 41d39e1e440b (bug 1056516)
Backed out changeset aaec04f76481 (bug 1056516)
2017-03-10 11:56:50 -05:00
jeremychen@mozilla.com
2cb71eafe4 Bug 1056516 - let auto hyphen honor manual hyphen when hyphens:auto is set. r=jfkthame
MozReview-Commit-ID: BWzg3pb2lDH

--HG--
extra : rebase_source : 069dc3091bf7600d4675fe9ea5d0b41bc70744ba
2017-03-10 00:30:11 +08:00
jeremychen@mozilla.com
f4ac16bb05 Bug 1056516 - use HyphenType to store different types of hyphenations. r=jfkthame
MozReview-Commit-ID: 22ICYSaY1I2

--HG--
extra : rebase_source : 05e0a442dec8a8ac7f1b663808fc016ee3385aa2
2017-03-10 00:30:11 +08:00
jeremychen@mozilla.com
68ca87317f Bug 1056516 - use AutoTArray for hyphenBuffer in BreakAndMeasureText. r=jfkthame
MozReview-Commit-ID: 1fQGiosLYG

--HG--
extra : rebase_source : cdca8fa9f308d3676a09b2735a98c13bd2a2e2ef
2017-03-10 00:30:10 +08:00
jeremychen@mozilla.com
ec96d9f267 Bug 276079 - add layout support for CSS text-justify property. r=xidorn
MozReview-Commit-ID: Kiwu8UNfbSj

--HG--
extra : rebase_source : 7673c42f8d401832437b0bb891f87aa22acabe15
2017-03-01 20:58:25 +08:00
jeremychen@mozilla.com
33b63777fa Bug 276079 - fix couple coding style in IsJustifiableCharacter. r=xidorn
MozReview-Commit-ID: Hf13sGzwdDl

--HG--
extra : rebase_source : b2ef71e347c235c8973fd5d74e845a2d3f523027
2017-03-01 20:58:25 +08:00
Ting-Yu Lin
8f840dc923 Bug 775624 Part 22 - Remove NS_FRAME_COMPLETE. r=dholbert
This patch is written by the following script with some manual adjustment to
the comment in nsRubyTextContainerFrame.cpp and nsRubyFrame.cpp, and
nsColumnSetFrame's constructor.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename "nsReflowStatus *([a-zA-Z0-9]*) = NS_FRAME_COMPLETE" "nsReflowStatus \1"
rename "([a-zA-Z0-9.*]*) *= NS_FRAME_COMPLETE;" "\1.Reset();"
rename "([a-zA-Z0-9.*]*) == NS_FRAME_COMPLETE" "\1.IsEmpty()"

MozReview-Commit-ID: 9tqQAHvdQex

--HG--
extra : rebase_source : 3119776946dc2c8350098b7bf9f3ceff29bdffb5
2017-02-14 17:55:48 +08:00
Ting-Yu Lin
f19bfc4b93 Bug 775624 Part 21 - Remove NS_FRAME_NOT_COMPLETE. r=dholbert
To preserve the semantics, Reset() is called to clear other bits in the
status prior to set the incomplete bit. Though some of them might not be
necessary.

MozReview-Commit-ID: InNDwcpp28A

--HG--
extra : rebase_source : 833e44a5dbb447d82c67f715cd5b0b2e97a5c62d
2017-02-14 17:30:56 +08:00
Ting-Yu Lin
37d27159af Bug 775624 Part 19 - Convert NS_INLINE_BREAK_FIRST_LETTER_COMPLETE to use bit-field and methods. r=dholbert
MozReview-Commit-ID: k1CSWJNMns

--HG--
extra : rebase_source : 1aa775a1e835f3d001f8b2093d0c4fb9f6651630
2017-02-14 17:09:37 +08:00
Ting-Yu Lin
d1e11eca37 Bug 775624 Part 13 - Convert NS_INLINE_LINE_BREAK_AFTER to a method. r=dholbert
NS_INLINE_MAKE_BREAK_TYPE is used only in BRFrame. Delete it, too.

MozReview-Commit-ID: GC4vF0GFsAD

--HG--
extra : rebase_source : d7727fe41410a8998142d9ded8dcd8ae9c2a780f
2017-02-14 11:52:53 +08:00
Ting-Yu Lin
56ebb62910 Bug 775624 Part 12 - Add bit-fields for inline break status, and convert NS_INLINE_LINE_BREAK_BEFORE. r=dholbert
NS_INLINE_LINE_BREAK_BEFORE() was replaced by the help of the following script.

function rename() {
find layout\
     -type f\
     \( -name "*.cpp" -or\
        -name "*.h" \)\
        -exec sed -i -r "s/$1/$2/g" "{}" \;
}

rename " = NS_INLINE_LINE_BREAK_BEFORE\(\);" ".SetInlineLineBreakBeforeAndReset();"

MozReview-Commit-ID: mz6L8zay7q

--HG--
extra : rebase_source : fddffa1288c7a52c7245aec0839a65f8d1d3f008
2017-02-14 11:52:53 +08:00
Carsten "Tomcat" Book
ed3d8d8286 merge mozilla-inbound to mozilla-central a=merge 2017-02-15 12:21:44 +01:00
Jeff Walden
cdee578059 Bug 1287006 - Don't pass Maybe (or any class containing a Maybe member) by value, only by reference or pointer, in layout/-related code. r=bz
--HG--
extra : rebase_source : 94377970d6ec591044a10dab1aa5568e4a051837
2017-02-13 09:07:40 -08:00
Daniel Holbert
452a3b8454 Bug 1339609: Add #include for gfxPrefs.h to all source code that calls gfxPrefs APIs. r=jgilbert
MozReview-Commit-ID: GxWehmDYB3t

--HG--
extra : rebase_source : cd994e5c6abf777f77c5a708cbfb2f6afc49a44c
2017-02-14 14:01:59 -08:00
Kartikaya Gupta
96c394d70c Merge m-c to graphics
MozReview-Commit-ID: AXRXwXgkOTv
2017-02-10 13:57:53 -05:00
Kartikaya Gupta
6580d884b2 Merge m-c to graphics
MozReview-Commit-ID: uU8MPphFqj
2017-02-02 13:38:51 -05:00