author | Xidorn Quan <quanxunzhen@gmail.com> |
Wed, 07 Oct 2015 14:04:32 +1100 | |
changeset 266424 | a350be6992deadb83362110790b908f8e4f63cd6 |
parent 266423 | 9ff1ca679580aa852749d3c5ed0dfe08ece33769 |
child 266425 | ddf4bf202aa267bff6ecb1bac6a3ed28f57fe0bf |
push id | 66186 |
push user | xquan@mozilla.com |
push date | Wed, 07 Oct 2015 03:05:34 +0000 |
treeherder | mozilla-inbound@b45bd6bd7d57 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | dbaron |
bugs | 1126230 |
milestone | 44.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
layout/style/nsCSSPseudoClassList.h | file | annotate | diff | comparison | revisions | |
layout/style/nsCSSRuleProcessor.cpp | file | annotate | diff | comparison | revisions |
--- a/layout/style/nsCSSPseudoClassList.h +++ b/layout/style/nsCSSPseudoClassList.h @@ -117,16 +117,19 @@ CSS_PSEUDO_CLASS(mozLWThemeDarkText, ":- // Matches anything when the containing window is inactive CSS_PSEUDO_CLASS(mozWindowInactive, ":-moz-window-inactive", 0, "") // Matches any table elements that have a nonzero border attribute, // according to HTML integer attribute parsing rules. CSS_PSEUDO_CLASS(mozTableBorderNonzero, ":-moz-table-border-nonzero", 0, "") +// Matches HTML frame/iframe elements which are mozbrowser. +CSS_PSEUDO_CLASS(mozBrowserFrame, ":-moz-browser-frame", 0, "") + // Matches whatever the contextual reference elements are for the // matching operation. CSS_PSEUDO_CLASS(scope, ":scope", 0, "layout.css.scope-pseudo.enabled") // :not needs to come at the end of the non-bit pseudo-class list, since // it doesn't actually get directly matched on in SelectorMatches. CSS_PSEUDO_CLASS(notPseudo, ":not", 0, "")
--- a/layout/style/nsCSSRuleProcessor.cpp +++ b/layout/style/nsCSSRuleProcessor.cpp @@ -51,16 +51,17 @@ #include "mozilla/ArrayUtils.h" #include "mozilla/EventStates.h" #include "mozilla/Preferences.h" #include "mozilla/LookAndFeel.h" #include "mozilla/Likely.h" #include "mozilla/TypedEnumBits.h" #include "RuleProcessorCache.h" #include "nsIDOMMutationEvent.h" +#include "nsIMozBrowserFrame.h" using namespace mozilla; using namespace mozilla::dom; #define VISITED_PSEUDO_PREF "layout.css.visited_links_enabled" static bool gSupportVisitedPseudo = true; @@ -2151,16 +2152,27 @@ static bool SelectorMatches(Element* aEl if (!val || (val->Type() == nsAttrValue::eInteger && val->GetIntegerValue() == 0)) { return false; } } break; + case nsCSSPseudoClasses::ePseudoClass_mozBrowserFrame: + { + nsCOMPtr<nsIMozBrowserFrame> + browserFrame = do_QueryInterface(aElement); + if (!browserFrame || + !browserFrame->GetReallyIsBrowserOrApp()) { + return false; + } + } + break; + case nsCSSPseudoClasses::ePseudoClass_dir: { if (aDependence) { EventStates states = sPseudoClassStateDependences[pseudoClass->mType]; if (aNodeMatchContext.mStateMask.HasAtLeastOneOfStates(states)) { *aDependence = true; return false;