Commit Graph

189 Commits

Author SHA1 Message Date
Cameron McCormack
25de3e886e Bug 773296 - Part 10: Add a new eCSSUnit_TokenStream type for storing unparsed CSS values. p=ebassi,heycam r=dbaron
Patch co-authored by Emmanuele Bassi <ebassi@gmail.com>

This adds a new nsCSSValue unit type to represent an unparsed
stream of CSS tokens as a specified value.  This is what properties
that have a variable reference get as their specified value.

On the nsCSSValueTokenStream object that is used when mUnit ==
eCSSUnit_TokenStream, we store two property IDs: first, the property
ID for the longhand that this token stream value is the value for.  We
pass this back in to nsCSSParser::ParseProperty at computed value time,
when we need to re-parse the property.  Second is the shorthand property
ID, if we used a variable reference in a shorthand.  In such a case, we
store the token stream value for each of the corresponding longhand
properties.  This is because shorthands don't actually get any storage
in an nsRuleData, and because any of the longhands might be overwritten
by subsequent declarations, we need to keep the token stream somewhere.

We also store other information on the nsCSSValueTokenStream required by
the CSS parser (base URI, etc.).
2013-12-12 13:09:42 +11:00
Cameron McCormack
40ecf580c9 Bug 921731 - Part 1: Add new eCSSUnit_Unset unit for nsCSSValues. r=bzbarsky 2013-10-04 04:49:17 +10:00
Ehsan Akhgari
1089e71462 Bug 916610 - Minimize the #includes in layout/style; r=roc 2013-09-15 21:06:52 -04:00
Daniel Holbert
e45757d120 Bug 907547: Update nsCSSValue::BufferFromString documentation to indicate that it's infallible, and remove callers' unneeded null-checks. r=bz 2013-08-21 12:31:38 -07:00
Catalin Iacob
f88cdc0744 Bug 798914 (part 5) - Use newly introduced mozilla::MallocSizeOf instead of nsMallocSizeOfFun. r=njn. 2013-06-23 14:03:39 +02:00
L. David Baron
a690f8de0a Bug 511803 patch 2: Convert all eCSSUnit_Function storage to use nsCSSKeyword. This leads to one behavior change, which is case canonicalization for font-variant-alternates function values. r=bzbarsky 2013-05-23 09:08:29 +08:00
Nathan Froyd
d80f045a6c Bug 858131 - rewrite FloatingPoint.h to be C++-only instead of C-compatible C++; r+original-author=Waldo 2013-05-01 16:55:13 -04:00
Kyle Huey
4697aa9afe Bug 816498: Fix some things about background attribute handling that are still broken. r=bz
As filed the bug is about table backgrounds failing to print.  The root cause of this is that we load images from the original document, because print/print-preview documents (which are static clones of the original) cannot do loads.  This results in an entry in the css::ImageValue's request table under the original document, but entry under the printing document.  Then we do layout, try to get the request, and fail, and nothing is displayed.  The solution to this is to force us to clone the request for the printing document if we're loading off the original document.  I manually verified that this does not regress Bug 560235.

While writing a test for this, we discovered another problem.  The reftest print code does not actually use the printing codepath.  Instead it takes an existing document, tears down its presshell, and creates a new presshell for printing.  Fixing the above bug did not make the reftest print test pass because ImageLoader does not deal properly with presshell destruction/recreation.  It assumes that when the presshell is destroyed all of the css::ImageValues can be cleared of their entries for that document.  This fails for ImageValues for mapped attributes because they are held alive by the content tree.  When a new presshell for this document is then created there is no entry for the document and thus no image request to paint.  The fix for this is to only clear the frame to request and request to frame mapping hashtables and not to clear the document's entry on the ImageValue when the presshell is destroyed.  The destruction of the ImageLoader (which is held from a strong reference on the document) is when those entries are removed.  The final change is to change css::ImageValue's hashtable from holding a strong reference to the keys (which are documents) to holding raw pointer references.  This is safe because we clear the relevant entry when the corresponding ImageLoader dies, and is needed to prevent a reference cycle that was being broken by presshell destruction.
2013-02-23 06:59:43 -08:00
L. David Baron
cb81c89318 Bug 563195: Fix -Wshadow warnings in layout/style. r=bzbarsky 2013-02-17 22:56:32 -08:00
Jeff Muizelaar
170a207cce Bug 801061. Switch from imgIRequest to imgRequestProxy. r=joe
This doesn't switch all of the users yet, but is a step in the right
direction.
2012-10-12 08:43:01 -04:00
Mats Palmgren
0ce986424e Bug 798853, style system. r=roc,dbaron 2012-10-22 15:53:31 +02:00
Seth Fowler
48449d088f Bug 503720: Implement vw/vh/vmin/vmax. r=dbaron 2012-10-19 16:21:06 -07:00
Kyle Huey
3fa23c4692 Bug 783162: Make mapped attributes hold the image alive. r=bz
The nsCSSValue in nsGenericHTMLElement::MapBackgroundInto is a temporary.  This causes a problem after Bug 697230 landed, because the nsCSSValue::Image we put into that value is destroyed once we're done doing style stuff.  Previously the nsImageLoader would grab the request off the nsCSSValue::Image and hold it alive.  Bug 697230 changed the behavior here; now when the nsCSSValue::Image is destroyed it tells the image loader to drop the request.  The result is that all the references to the request are dropped and the frame is never told it has a background.

The solution is to keep the nsCSSValue::Image alive longer.  This patch adds two new types of nsAttrValue.  The first is an nsCSSValue::URL.  A ParseBackgroundAttribute method is added on nsGenericHTMLElement that the relevant elements (body/td/th/table/tr/tbody/thead/tfoot) call that parses background into an nsCSSValue::URL.  The second is an nsCSSValue::Image.  nsGenericHTMLElement::MapBackgroundInto attempts to convert the nsCSSValue::URL into an nsCSSValue::Image by kicking off the image load.  The result is that image loads are only started when the element is actually visible.  This also mirrors the way background-image works.  This also allows us to fix two longstanding bugs in this code.  Since MapBackgroundInto doesn't have a pointer to the actual element, it relied on grabbing the principal of the document.  Now we can grab the principal of the node in ParseBackgroundAttribute.  MapBackgroundInto also has no way to get at the element's base URI (to honor xml:base), which is now possible in ParseBackgroundAttribute.

nsCSSValue::[Image|URL] have also been moved to be mozilla::css::[Image|URL]Value.  nsAttrValue.h is included in external linkage code, so it can't include nsCSSValue.h to get the declarations of nsCSSValue::[Image|URL], and nested classes can't be forward declared.  Moving the classes to a namespace solves the problem.

Finally some old inoperative quirks mode code was removed.  This code has done nothing since Bug 273078 was landed in 2004.
2012-08-24 10:50:49 -07:00
Ehsan Akhgari
243c878d26 Bug 579517 - Part 1: Automated conversion of NSPR numeric types to stdint types in Gecko; r=bsmedberg
This patch was generated by a script.  Here's the source of the script for
future reference:

function convert() {
echo "Converting $1 to $2..."
find . ! -wholename "*nsprpub*" \
       ! -wholename "*security/nss*" \
       ! -wholename "*/.hg*" \
       ! -wholename "obj-ff-dbg*" \
       ! -name nsXPCOMCID.h \
       ! -name prtypes.h \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert PRInt8 int8_t
convert PRUint8 uint8_t
convert PRInt16 int16_t
convert PRUint16 uint16_t
convert PRInt32 int32_t
convert PRUint32 uint32_t
convert PRInt64 int64_t
convert PRUint64 uint64_t

convert PRIntn int
convert PRUintn unsigned

convert PRSize size_t

convert PROffset32 int32_t
convert PROffset64 int64_t

convert PRPtrdiff ptrdiff_t

convert PRFloat64 double
2012-08-22 11:56:38 -04:00
Kyle Huey
cc6ea9a4c7 Bug 697230: Part 1 - Centralize style image observers. r=bz 2012-08-13 15:04:19 -07:00
Aryeh Gregor
8b4a23fc4c Bug 777292 part 2 - Change all nsnull to nullptr 2012-07-30 17:20:58 +03:00
Masatoshi Kimura
eb2dd03221 Bug 752187 - Part 9: Implement unprefixed radial-gradient parsing. r=dbaron 2012-07-07 10:27:08 -04:00
Masatoshi Kimura
dbd00414b2 Bug 752187 - Part 6: Rename mIsToCorner to mIsLegacySyntax. r=dbaron 2012-07-07 10:27:08 -04:00
L. David Baron
862641f67e Serialize border-image shorthand to shortest form, with the exception that we'll always serialize 'border-image-source'. (Bug 713643, patch 1) r=bzbarsky 2012-05-30 22:19:49 -07:00
Gervase Markham
cb6a072c2a Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Kyle Huey
75ce446ae2 Back out Bug 679230 due to Android reftest failures. 2012-04-07 10:36:49 -07:00
Kyle Huey
4cf42ddeb6 Bug 697230: Part 1 - Centralize style image observers. r=bz 2012-04-07 08:58:41 -07:00
Boris Zbarsky
e59e8d9572 Bug 716628. Implement support for 'turn' unit in CSS. r=dbaron 2012-02-04 00:01:23 -05:00
Nicholas Nethercote
4762ea78a3 Bug 671299 (part 3) - Add style sheet memory reporters. r=dbaron. 2012-01-02 18:19:14 -08:00
William Chen
97a3dc759f Bug 497995: Part 1 - Implement border-image revisions in latest css3-background spec. r=dbaron 2011-12-22 18:34:45 -05:00
Jeff Walden
edbb60f3de Bug 711647 - Add MOZ_DELETE to a bunch of deliberately-not-implemented methods across the tree. r=dbaron 2011-12-16 14:42:07 -05:00
Masatoshi Kimura
ce2f103148 Bug 685400 - add "to" syntax and "magic corner" feature to CSS linear gradient. r=dbaron 2011-10-22 21:41:11 +02:00
Zack Weinberg
0bdf036262 Bug 659963: consistently use infallible malloc in the CSS parser. r=dbaron 2011-05-28 15:38:48 -07:00
Ehsan Akhgari
478ad1a412 Bug 690892 - Replace PR_TRUE/PR_FALSE with true/false on mozilla-central; rs=dbaron
Landing on a CLOSED TREE
2011-10-17 10:59:28 -04:00
Michael Wu
0fe7772ece Bug 675553 - Switch from PRBool to bool on a CLOSED TREE , r=bsmedberg,khuey,bz,cjones 2011-09-28 23:19:26 -07:00
Matt Woodrow
2f6ba7e854 Bug 505115 - Part 11a - Add nsCSSValueTriplet and optionally read a z component to -moz-transform-origin. r=dbaron 2011-08-03 15:04:23 +12:00
Matt Woodrow
648e9e83bd Bug 505115 - Part 3 - Convert nsStyleTransformMatrix to be backed by a 4x4 matrix. r=dbaron 2011-07-23 10:28:07 +12:00
Boris Zbarsky
11707a8200 Bug 597291. Create nsIURI objects lazily for nsCSSValue::URL, so that we don't pay the cost of creating the ones we don't actually need. r=dbaron
In the new setup, the mURL member of nsCSSValue::URL stores either the actual URI pointed to or the base URI; a boolean flag keeps track of which is stored.  Consumers use GetURI() to get the URI instead of raw access to mURI, and GetURI calls NS_NewURI as needed.
2011-05-11 11:28:53 -04:00
L. David Baron
faee561388 Implement step-start, step-end, and steps() timing functions. (Bug 435442, patch 0) r=bzbarsky 2011-04-11 23:18:42 -07:00
L. David Baron
a1be54b9af Move nsCSSCornerSizes from nsCSSStruct.h/cpp to nsCSSValue.h/cpp. (Bug 645620, patch 3) r=bzbarsky 2011-03-28 16:07:26 -07:00
Daniel Holbert
c1b9d194e9 Bug 615977: Make nsCSSValue::BufferFromString() return an already_AddRefed pointer. r=dbaron a=roc 2010-12-05 13:17:29 +00:00
L. David Baron
ee4805ffdb Add a fallible version of nsCSSValue::Array::Create. (Bug 520234) r=bzbarsky a=blocking2.0:beta7 2010-09-15 08:11:26 -07:00
L. David Baron
e135530c65 Remove support for min() and max() in calc(): remove support for parsing and storage. (Bug 363249) r=bzbarsky a2.0=blocking2.0:beta6 2010-09-11 09:27:12 -07:00
Zack Weinberg
a37ffa9061 Bug 576044 (11/12): Make all assertions fatal in Declaration.h, Declaration.cpp, nsCSSDataBlock.h, nsCSSDataBlock.cpp, nsCSSValue.h, nsCSSValue.cpp, nsCSSProps.h, and nsCSSProps.cpp. r=dbaron a2.0=dbaron 2010-08-19 15:33:44 -04:00
Zack Weinberg
4d1c92a45d Bug 576044 (5/12): eliminate ValueList as a storage type. r=dbaron a2.0=dbaron 2010-08-19 15:33:44 -04:00
Zack Weinberg
698cc2a773 Bug 576044 (4/12): eliminate ValuePairList as a storage type. r=dbaron a2.0=dbaron 2010-08-19 15:33:44 -04:00
Zack Weinberg
1d56fbae0e Bug 576044 (3/12): eliminate Rect as a storage type. r=dbaron a2.0=dbaron 2010-08-19 15:33:44 -04:00
Zack Weinberg
3c4c708e33 Bug 576044 (2/12): eliminate ValuePair as a storage type. r=dbaron a2.0=dbaron 2010-08-19 15:33:44 -04:00
Zack Weinberg
8e9d7330ac Bug 576044 (1/12): Move all the CSS 'storage types' (rect, value pair, etc) to nsCSSValue.h and their code to nsCSSValue.cpp. r=dbaron a2.0=dbaron 2010-08-19 15:33:43 -04:00
Robert O'Callahan
5f2b36e2ef Bug 537890. Part 5: Make pc, in, mm and cm be a fixed number of CSS pixels. r=dbaron 2010-08-13 21:58:02 +12:00
Robert O'Callahan
f1ff477b4d Bug 537890. Part 4.5: Create 'mozmm' unit for physical millimeters on screen devices. r=dbaron 2010-08-13 21:58:02 +12:00
Robert O'Callahan
6708ede88f Bug 537890. Part 4: Make points be a fixed number of CSS pixels. r=dbaron 2010-08-13 21:58:01 +12:00
Robert O'Callahan
58a657801b Backing out bug 584282 and bug 537890 2010-08-14 02:35:06 +12:00
Markus Stange
a25344de87 Bug 506826 - Parsing for background-image: -moz-element(#elementID). r=dbaron 2010-08-13 15:33:37 +02:00
Zack Weinberg
fb8bbf2eb6 Bug 569719 part 6: Move Declaration::AppendCSSValueToString into nsCSSValue. r=dbaron 2010-07-23 11:00:27 -07:00