diff --git a/b2g/installer/package-manifest.in b/b2g/installer/package-manifest.in index f759b666cbbc..8facd7e5debb 100644 --- a/b2g/installer/package-manifest.in +++ b/b2g/installer/package-manifest.in @@ -537,8 +537,6 @@ @BINPATH@/components/formautofill.manifest @BINPATH@/components/FormAutofillContentService.js @BINPATH@/components/FormAutofillStartup.js -@BINPATH@/components/CSSUnprefixingService.js -@BINPATH@/components/CSSUnprefixingService.manifest @BINPATH@/components/contentAreaDropListener.manifest @BINPATH@/components/contentAreaDropListener.js @BINPATH@/components/messageWakeupService.js diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index b3982d04542f..6b15f029fb21 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -476,8 +476,6 @@ @RESPATH@/components/formautofill.manifest @RESPATH@/components/FormAutofillContentService.js @RESPATH@/components/FormAutofillStartup.js -@RESPATH@/components/CSSUnprefixingService.js -@RESPATH@/components/CSSUnprefixingService.manifest @RESPATH@/components/contentAreaDropListener.manifest @RESPATH@/components/contentAreaDropListener.js @RESPATH@/browser/components/BrowserProfileMigrators.manifest diff --git a/layout/style/CSSUnprefixingService.js b/layout/style/CSSUnprefixingService.js deleted file mode 100644 index 9fc1341f6890..000000000000 --- a/layout/style/CSSUnprefixingService.js +++ /dev/null @@ -1,157 +0,0 @@ -/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- / -/* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* Implementation of a service that converts certain vendor-prefixed CSS - properties to their unprefixed equivalents, for sites on a whitelist. */ -// XXXdholbert whitelist is coming in bug 1132743 - -"use strict"; - -const Cc = Components.classes; -const Ci = Components.interfaces; -const Cu = Components.utils; - -Cu.import("resource://gre/modules/XPCOMUtils.jsm"); - -function CSSUnprefixingService() { -} - -CSSUnprefixingService.prototype = { - // Boilerplate: - classID: Components.ID("{f0729490-e15c-4a2f-a3fb-99e1cc946b42}"), - _xpcom_factory: XPCOMUtils.generateSingletonFactory(CSSUnprefixingService), - QueryInterface: XPCOMUtils.generateQI([Ci.nsICSSUnprefixingService]), - - // See documentation in nsICSSUnprefixingService.idl - generateUnprefixedDeclaration: function(aPropName, aRightHalfOfDecl, - aUnprefixedDecl /*out*/) { - - // Convert our input strings to lower-case, for easier string-matching. - // (NOTE: If we ever need to add support for unprefixing properties that - // have case-sensitive parts, then we should do these toLowerCase() - // conversions in a more targeted way, to avoid breaking those properties.) - aPropName = aPropName.toLowerCase(); - aRightHalfOfDecl = aRightHalfOfDecl.toLowerCase(); - - // We have several groups of supported properties: - // FIRST GROUP: Properties that can just be handled as aliases: - // ============================================================ - const propertiesThatAreJustAliases = { - "-webkit-background-size": "background-size", - "-webkit-box-flex": "flex-grow", - "-webkit-box-ordinal-group": "order", - "-webkit-box-sizing": "box-sizing", - "-webkit-transform": "transform", - }; - - let unprefixedPropName = propertiesThatAreJustAliases[aPropName]; - if (unprefixedPropName !== undefined) { - aUnprefixedDecl.value = unprefixedPropName + ":" + aRightHalfOfDecl; - return true; - } - - // SECOND GROUP: Properties that take a single keyword, where the - // unprefixed version takes a different (but analogous) set of keywords: - // ===================================================================== - const propertiesThatNeedKeywordMapping = { - "-webkit-box-align" : { - unprefixedPropName : "align-items", - valueMap : { - "start" : "flex-start", - "center" : "center", - "end" : "flex-end", - "baseline" : "baseline", - "stretch" : "stretch" - } - }, - "-webkit-box-orient" : { - unprefixedPropName : "flex-direction", - valueMap : { - "horizontal" : "row", - "inline-axis" : "row", - "vertical" : "column", - "block-axis" : "column" - } - }, - "-webkit-box-pack" : { - unprefixedPropName : "justify-content", - valueMap : { - "start" : "flex-start", - "center" : "center", - "end" : "flex-end", - "justify" : "space-between" - } - }, - }; - - let propInfo = propertiesThatNeedKeywordMapping[aPropName]; - if (typeof(propInfo) != "undefined") { - // Regexp for parsing the right half of a declaration, for keyword-valued - // properties. Divides the right half of the declaration into: - // 1) any leading whitespace - // 2) the property value (one or more alphabetical character or hyphen) - // 3) anything after that (e.g. "!important", ";") - // Then we can look up the appropriate unprefixed-property value for the - // value (part 2), and splice that together with the other parts and with - // the unprefixed property-name to make the final declaration. - const keywordValuedPropertyRegexp = /^(\s*)([a-z\-]+)(.*)/; - let parts = keywordValuedPropertyRegexp.exec(aRightHalfOfDecl); - if (!parts) { - // Failed to parse a keyword out of aRightHalfOfDecl. (It probably has - // no alphabetical characters.) - return false; - } - - let mappedKeyword = propInfo.valueMap[parts[2]]; - if (mappedKeyword === undefined) { - // We found a keyword in aRightHalfOfDecl, but we don't have a mapping - // to an equivalent keyword for the unprefixed version of the property. - return false; - } - - aUnprefixedDecl.value = propInfo.unprefixedPropName + ":" + - parts[1] + // any leading whitespace - mappedKeyword + - parts[3]; // any trailing text (e.g. !important, semicolon, etc) - - return true; - } - - // THIRD GROUP: Properties that may need arbitrary string-replacement: - // =================================================================== - const propertiesThatNeedStringReplacement = { - // "-webkit-transition" takes a multi-part value. If "-webkit-transform" - // appears as part of that value, replace it w/ "transform". - // And regardless, we unprefix the "-webkit-transition" property-name. - // (We could handle other prefixed properties in addition to 'transform' - // here, but in practice "-webkit-transform" is the main one that's - // likely to be transitioned & that we're concerned about supporting.) - "-webkit-transition": { - unprefixedPropName : "transition", - stringMap : { - "-webkit-transform" : "transform", - } - }, - }; - - propInfo = propertiesThatNeedStringReplacement[aPropName]; - if (typeof(propInfo) != "undefined") { - let newRightHalf = aRightHalfOfDecl; - for (let strToReplace in propInfo.stringMap) { - let replacement = propInfo.stringMap[strToReplace]; - newRightHalf = newRightHalf.replace(strToReplace, replacement, "g"); - } - aUnprefixedDecl.value = propInfo.unprefixedPropName + ":" + newRightHalf; - - return true; - } - - // No known mapping for property aPropName. - return false; - }, -}; - -this.NSGetFactory = XPCOMUtils.generateNSGetFactory([CSSUnprefixingService]); diff --git a/layout/style/CSSUnprefixingService.manifest b/layout/style/CSSUnprefixingService.manifest deleted file mode 100644 index 08143d4ab8a3..000000000000 --- a/layout/style/CSSUnprefixingService.manifest +++ /dev/null @@ -1,2 +0,0 @@ -component {f0729490-e15c-4a2f-a3fb-99e1cc946b42} CSSUnprefixingService.js -contract @mozilla.org/css-unprefixing-service;1 {f0729490-e15c-4a2f-a3fb-99e1cc946b42} diff --git a/layout/style/moz.build b/layout/style/moz.build index 8fbce980c18d..f170ab101be7 100644 --- a/layout/style/moz.build +++ b/layout/style/moz.build @@ -7,12 +7,6 @@ DIRS += ['xbl-marquee'] TEST_DIRS += ['test'] -XPIDL_SOURCES += [ - 'nsICSSUnprefixingService.idl', -] - -XPIDL_MODULE = 'layout_base' - EXPORTS += [ 'AnimationCommon.h', 'CounterStyleManager.h', @@ -153,11 +147,6 @@ SOURCES += [ 'nsCSSRuleProcessor.cpp', ] -EXTRA_COMPONENTS += [ - 'CSSUnprefixingService.js', - 'CSSUnprefixingService.manifest', -] - FAIL_ON_WARNINGS = True MSVC_ENABLE_PGO = True diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp index 354f88fd3f3c..012409a6e12d 100644 --- a/layout/style/nsCSSParser.cpp +++ b/layout/style/nsCSSParser.cpp @@ -38,7 +38,6 @@ #include "nsIMediaList.h" #include "nsStyleUtil.h" #include "nsIPrincipal.h" -#include "nsICSSUnprefixingService.h" #include "prprf.h" #include "nsContentUtils.h" #include "nsAutoPtr.h" @@ -57,7 +56,6 @@ typedef nsCSSProps::KTableValue KTableValue; // pref-backed bool values (hooked up in nsCSSParser::Startup) static bool sOpentypeSVGEnabled; -static bool sUnprefixingServiceEnabled; const uint32_t nsCSSProps::kParserVariantTable[eCSSProperty_COUNT_no_shorthands] = { @@ -418,103 +416,6 @@ protected: nsIURI* aSheetURI, nsIURI* aBaseURI, nsIPrincipal* aSheetPrincipal); void ReleaseScanner(void); - - /** - * This is a RAII class which behaves like an "AutoRestore<>" for our parser - * input state. When instantiated, this class saves the current parser input - * state (in a CSSParserInputState object), and it restores the parser to - * that state when destructed, unless "DoNotRestore()" has been called. - */ - class MOZ_STACK_CLASS nsAutoCSSParserInputStateRestorer { - public: - explicit nsAutoCSSParserInputStateRestorer(CSSParserImpl* aParser - MOZ_GUARD_OBJECT_NOTIFIER_PARAM) - : mParser(aParser), - mShouldRestore(true) - { - MOZ_GUARD_OBJECT_NOTIFIER_INIT; - mParser->SaveInputState(mSavedState); - } - - void DoNotRestore() - { - mShouldRestore = false; - } - - ~nsAutoCSSParserInputStateRestorer() - { - if (mShouldRestore) { - mParser->RestoreSavedInputState(mSavedState); - } - } - - private: - MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER - CSSParserImpl* mParser; - CSSParserInputState mSavedState; - bool mShouldRestore; - }; - - /** - * This is a RAII class which creates a temporary nsCSSScanner for the given - * string, and reconfigures aParser to use *that* scanner instead of its - * existing scanner, until we go out of scope. (This allows us to rewrite - * a portion of a stylesheet using a temporary string, and switch to parsing - * that rewritten section, and then resume parsing the original stylesheet.) - * - * aParser must have a non-null nsCSSScanner (which we'll be temporarily - * replacing) and ErrorReporter (which this class will co-opt for the - * temporary parser). While we're in scope, we also suppress error reporting, - * so it doesn't really matter which reporter we use. We suppress reporting - * because this class is only used with CSS that is synthesized & didn't - * come directly from an author, and it would be confusing if we reported - * syntax errors for CSS that an author didn't provide. - * - * XXXdholbert we could also change this & report errors, if needed. Might - * want to customize the error reporting somehow though. - */ - class MOZ_STACK_CLASS nsAutoScannerChanger { - public: - nsAutoScannerChanger(CSSParserImpl* aParser, - const nsAString& aStringToScan - MOZ_GUARD_OBJECT_NOTIFIER_PARAM) - : mParser(aParser), - mOriginalScanner(aParser->mScanner), - mStringScanner(aStringToScan, 0), - mParserStateRestorer(aParser), - mErrorSuppresser(aParser) - { - MOZ_ASSERT(mOriginalScanner, - "Shouldn't use nsAutoScannerChanger unless we already " - "have a scanner"); - MOZ_GUARD_OBJECT_NOTIFIER_INIT; - - // Set & setup the new scanner: - mParser->mScanner = &mStringScanner; - mStringScanner.SetErrorReporter(mParser->mReporter); - - // We might've had push-back on our original scanner (and if we did, - // that fact is saved via mParserStateRestorer). But we don't have - // push-back in mStringScanner, so clear that flag. - mParser->mHavePushBack = false; - } - - ~nsAutoScannerChanger() - { - // Restore original scanner. All other cleanup is done by RAII members. - mParser->mScanner = mOriginalScanner; - } - - private: - MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER - CSSParserImpl* mParser; - nsCSSScanner *mOriginalScanner; - nsCSSScanner mStringScanner; - nsAutoCSSParserInputStateRestorer mParserStateRestorer; - nsAutoSuppressErrors mErrorSuppresser; - }; - - bool IsSVGMode() const { return mScanner->IsSVGMode(); } @@ -704,10 +605,8 @@ protected: bool ParseSelector(nsCSSSelectorList* aList, char16_t aPrevCombinator); enum { - eParseDeclaration_InBraces = 1 << 0, - eParseDeclaration_AllowImportant = 1 << 1, - // The declaration we're parsing was generated by the CSSUnprefixingService: - eParseDeclaration_FromUnprefixingSvc = 1 << 2 + eParseDeclaration_InBraces = 1 << 0, + eParseDeclaration_AllowImportant = 1 << 1 }; enum nsCSSContextType { eCSSContext_General, @@ -722,21 +621,6 @@ protected: bool* aChanged, nsCSSContextType aContext = eCSSContext_General); - // A "prefix-aware" wrapper for nsCSSKeywords::LookupKeyword(). - // Use this instead of LookupKeyword() if you might be parsing an unprefixed - // property (like "display") for which we emulate a vendor-prefixed value - // (like "-webkit-box"). - nsCSSKeyword LookupKeywordPrefixAware(nsAString& aKeywordStr, - const KTableValue aKeywordTable[]); - - bool ShouldUseUnprefixingService(); - bool ParsePropertyWithUnprefixingService(const nsAString& aPropertyName, - css::Declaration* aDeclaration, - uint32_t aFlags, - bool aMustCallValueAppended, - bool* aChanged, - nsCSSContextType aContext); - bool ParseProperty(nsCSSProperty aPropID); bool ParsePropertyByFunction(nsCSSProperty aPropID); bool ParseSingleValueProperty(nsCSSValue& aValue, @@ -1202,12 +1086,6 @@ protected: // @supports rule. bool mSuppressErrors : 1; - // True if we've parsed "display: -webkit-box" as "display: flex" in an - // earlier declaration within the current block of declarations, as part of - // emulating support for certain -webkit-prefixed properties on certain - // sites. - bool mDidUnprefixWebkitBoxInEarlierDecl; // not :1 so we can use AutoRestore - // Stack of rule groups; used for @media and such. InfallibleTArray > mGroupStack; @@ -1284,7 +1162,6 @@ CSSParserImpl::CSSParserImpl() mInSupportsCondition(false), mInFailingSupportsRule(false), mSuppressErrors(false), - mDidUnprefixWebkitBoxInEarlierDecl(false), mNextFree(nullptr) { } @@ -1513,10 +1390,6 @@ CSSParserImpl::ParseDeclarations(const nsAString& aBuffer, css::ErrorReporter reporter(scanner, mSheet, mChildLoader, aSheetURI); InitScanner(scanner, reporter, aSheetURI, aBaseURI, aSheetPrincipal); - MOZ_ASSERT(!mDidUnprefixWebkitBoxInEarlierDecl, - "Someone forgot to clear the 'did unprefix webkit-box' flag"); - AutoRestore autoRestore(mDidUnprefixWebkitBoxInEarlierDecl); - mSection = eCSSSection_General; mData.AssertInitialState(); @@ -6161,10 +6034,6 @@ CSSParserImpl::ParseDeclarationBlock(uint32_t aFlags, nsCSSContextType aContext) { bool checkForBraces = (aFlags & eParseDeclaration_InBraces) != 0; - MOZ_ASSERT(!mDidUnprefixWebkitBoxInEarlierDecl, - "Someone forgot to clear the 'did unprefix webkit-box' flag"); - AutoRestore restorer(mDidUnprefixWebkitBoxInEarlierDecl); - if (checkForBraces) { if (!ExpectSymbol('{', true)) { REPORT_UNEXPECTED_TOKEN(PEBadDeclBlockStart); @@ -6572,108 +6441,6 @@ CSSParserImpl::ParseTreePseudoElement(nsAtomList **aPseudoElementArgs) } #endif -nsCSSKeyword -CSSParserImpl::LookupKeywordPrefixAware(nsAString& aKeywordStr, - const KTableValue aKeywordTable[]) -{ - nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(aKeywordStr); - - if (aKeywordTable == nsCSSProps::kDisplayKTable) { - if (keyword == eCSSKeyword_UNKNOWN && - ShouldUseUnprefixingService() && - aKeywordStr.EqualsLiteral("-webkit-box")) { - // Treat "display: -webkit-box" as "display: flex". In simple scenarios, - // they largely behave the same, as long as we use the CSS Unprefixing - // Service to also translate the associated properties. - mDidUnprefixWebkitBoxInEarlierDecl = true; - return eCSSKeyword_flex; - } - - // If we've seen "display: -webkit-box" in an earlier declaration and we - // tried to unprefix it to emulate support for it, then we have to watch - // out for later "display: -moz-box" declarations; they're likely just a - // halfhearted attempt at compatibility, and they actually end up stomping - // on our emulation of the earlier -webkit-box display-value, via the CSS - // cascade. To prevent this problem, we also treat "display: -moz-box" as - // "display: flex" (but only if we unprefixed an earlier "-webkit-box"). - if (mDidUnprefixWebkitBoxInEarlierDecl && keyword == eCSSKeyword__moz_box) { - MOZ_ASSERT(ShouldUseUnprefixingService(), - "mDidUnprefixWebkitBoxInEarlierDecl should only be set if " - "we're using the unprefixing service on this site"); - return eCSSKeyword_flex; - } - } - - return keyword; -} - -bool -CSSParserImpl::ShouldUseUnprefixingService() -{ - if (!sUnprefixingServiceEnabled) { - return false; - } - - // XXXdholbert Bug 1132743: Check if stylesheet URI is on fixlist here. - return true; -} - -bool -CSSParserImpl::ParsePropertyWithUnprefixingService( - const nsAString& aPropertyName, - css::Declaration* aDeclaration, - uint32_t aFlags, - bool aMustCallValueAppended, - bool* aChanged, - nsCSSContextType aContext) -{ - MOZ_ASSERT(ShouldUseUnprefixingService(), - "Caller should've checked ShouldUseUnprefixingService()"); - - nsCOMPtr unprefixingSvc = - do_GetService(NS_CSSUNPREFIXINGSERVICE_CONTRACTID); - NS_ENSURE_TRUE(unprefixingSvc, false); - - // Save the state so we can jump back to this spot if our unprefixing fails - // (so we can behave as if we didn't even try to unprefix). - nsAutoCSSParserInputStateRestorer parserStateBeforeTryingToUnprefix(this); - - // Caller has already parsed the first half of the declaration -- - // aPropertyName and the ":". Now, we record the rest of the CSS declaration - // (the part after ':') into rightHalfOfDecl. (This is the property value, - // plus anything else up to the end of the declaration -- maybe "!important", - // maybe trailing junk characters, maybe a semicolon, maybe a trailing "}".) - bool checkForBraces = (aFlags & eParseDeclaration_InBraces) != 0; - nsAutoString rightHalfOfDecl; - mScanner->StartRecording(); - SkipDeclaration(checkForBraces); - mScanner->StopRecording(rightHalfOfDecl); - - // Try to unprefix: - bool success; - nsAutoString unprefixedDecl; - nsresult rv = - unprefixingSvc->GenerateUnprefixedDeclaration(aPropertyName, - rightHalfOfDecl, - unprefixedDecl, &success); - if (NS_FAILED(rv) || !success) { - return false; - } - - // Attempt to parse the unprefixed declaration: - nsAutoScannerChanger scannerChanger(this, unprefixedDecl); - success = ParseDeclaration(aDeclaration, - aFlags | eParseDeclaration_FromUnprefixingSvc, - aMustCallValueAppended, aChanged, aContext); - if (success) { - // We succeeded, so we'll leave the parser pointing at the end of - // the declaration; don't restore it to the pre-recording position. - parserStateBeforeTryingToUnprefix.DoNotRestore(); - } - - return success; -} - //---------------------------------------------------------------------- bool @@ -6763,19 +6530,7 @@ CSSParserImpl::ParseDeclaration(css::Declaration* aDeclaration, (aContext == eCSSContext_Page && !nsCSSProps::PropHasFlags(propID, CSS_PROPERTY_APPLIES_TO_PAGE_RULE))) { // unknown property - if (NonMozillaVendorIdentifier(propertyName)) { - if (!mInSupportsCondition && - aContext == eCSSContext_General && - !(aFlags & eParseDeclaration_FromUnprefixingSvc) && // no recursion - ShouldUseUnprefixingService()) { - if (ParsePropertyWithUnprefixingService(propertyName, - aDeclaration, aFlags, - aMustCallValueAppended, - aChanged, aContext)) { - return true; - } - } - } else { + if (!NonMozillaVendorIdentifier(propertyName)) { REPORT_UNEXPECTED_P(PEUnknownProperty, propertyName); REPORT_UNEXPECTED(PEDeclDropped); OUTPUT_ERROR(); @@ -7146,9 +6901,7 @@ CSSParserImpl::ParseVariant(nsCSSValue& aValue, nsCSSToken* tk = &mToken; if (((aVariantMask & (VARIANT_AHK | VARIANT_NORMAL | VARIANT_NONE | VARIANT_ALL)) != 0) && (eCSSToken_Ident == tk->mType)) { - nsCSSKeyword keyword = LookupKeywordPrefixAware(tk->mIdent, - aKeywordTable); - + nsCSSKeyword keyword = nsCSSKeywords::LookupKeyword(tk->mIdent); if (eCSSKeyword_UNKNOWN < keyword) { // known keyword if ((aVariantMask & VARIANT_AUTO) != 0) { if (eCSSKeyword_auto == keyword) { @@ -15307,8 +15060,6 @@ nsCSSParser::Startup() { Preferences::AddBoolVarCache(&sOpentypeSVGEnabled, "gfx.font_rendering.opentype_svg.enabled"); - Preferences::AddBoolVarCache(&sUnprefixingServiceEnabled, - "layout.css.unprefixing-service.enabled"); } nsCSSParser::nsCSSParser(mozilla::css::Loader* aLoader, diff --git a/layout/style/nsICSSUnprefixingService.idl b/layout/style/nsICSSUnprefixingService.idl deleted file mode 100644 index e4d5e65e10cc..000000000000 --- a/layout/style/nsICSSUnprefixingService.idl +++ /dev/null @@ -1,48 +0,0 @@ -/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -/* interface for a service that converts certain vendor-prefixed CSS properties - to their unprefixed equivalents */ - -#include "nsISupports.idl" - -[scriptable, uuid(927a5c60-0378-4bcb-a50d-99e6d1fe6063)] -interface nsICSSUnprefixingService : nsISupports -{ - /** - * This function helps to convert unsupported vendor-prefixed CSS into - * supported unprefixed CSS. Given a vendor-prefixed property name and a - * value (or e.g. value + trailing junk like " !important;}"), this function - * will attempt to produce an equivalent CSS declaration that uses a - * supported unprefixed CSS property. - * - * @param aPropName - * The vendor-prefixed property name. - * - * @param aRightHalfOfDecl - * Everything after the ":" in the CSS declaration. This includes - * the property's value, along with possibly some leading whitespace - * and trailing text like "!important", and possibly a ';' and/or - * '}' (along with any other bogus text the author happens to - * include before those, which will probably make the decl invalid). - * - * @param aUnprefixedDecl[out] - * The resulting unprefixed declaration, if we return true. - * - * @return true if we were able to unprefix -- i.e. if we were able to - * convert the property to a known unprefixed equivalent, and we also - * performed any known-to-be-necessary fixup on the value, and we put - * the result in aUnprefixedDecl. - * Otherwise, this function returns false. - */ - boolean generateUnprefixedDeclaration(in AString aPropName, - in AString aRightHalfOfDecl, - out AString aUnprefixedDecl); -}; - -%{C++ -#define NS_CSSUNPREFIXINGSERVICE_CONTRACTID \ - "@mozilla.org/css-unprefixing-service;1" -%} diff --git a/layout/style/test/mochitest.ini b/layout/style/test/mochitest.ini index c34d19efaedc..967d7e14648b 100644 --- a/layout/style/test/mochitest.ini +++ b/layout/style/test/mochitest.ini @@ -223,7 +223,6 @@ skip-if = buildapp == 'b2g' || toolkit == 'android' #bug 775227 # b2g(times out, [test_units_frequency.html] [test_units_length.html] [test_units_time.html] -[test_unprefixing_service.html] [test_value_cloning.html] skip-if = (toolkit == 'gonk' && debug) || toolkit == 'android' #bug 775227 #debug-only failure; timed out [test_value_computation.html] diff --git a/layout/style/test/test_unprefixing_service.html b/layout/style/test/test_unprefixing_service.html deleted file mode 100644 index 0bf3b685a7e9..000000000000 --- a/layout/style/test/test_unprefixing_service.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - Test for Bug 1107378 - - - - - -Mozilla Bug 1107378 -
-
-
-
-
-
-
- - diff --git a/mobile/android/installer/package-manifest.in b/mobile/android/installer/package-manifest.in index a87e52c32745..c406e7594cbe 100644 --- a/mobile/android/installer/package-manifest.in +++ b/mobile/android/installer/package-manifest.in @@ -391,8 +391,6 @@ @BINPATH@/components/formautofill.manifest @BINPATH@/components/FormAutofillContentService.js @BINPATH@/components/FormAutofillStartup.js -@BINPATH@/components/CSSUnprefixingService.js -@BINPATH@/components/CSSUnprefixingService.manifest @BINPATH@/components/contentAreaDropListener.manifest @BINPATH@/components/contentAreaDropListener.js @BINPATH@/components/messageWakeupService.js diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index fcb4997c62e4..938eba86b43e 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -2154,10 +2154,6 @@ pref("layout.css.prefixes.animations", true); pref("layout.css.prefixes.box-sizing", true); pref("layout.css.prefixes.font-features", true); -// Is the CSS Unprefixing Service enabled? (This service emulates support -// for certain vendor-prefixed properties & values, for sites on a "fixlist".) -pref("layout.css.unprefixing-service.enabled", false); - // Is support for the :scope selector enabled? pref("layout.css.scope-pseudo.enabled", true);