Bug 1290209 - Part 8: Move CSSStyleSheet::SetEnabled up to StyleSheet. r=xidorn

MozReview-Commit-ID: 7shpy5ghnVR
This commit is contained in:
Cameron McCormack 2017-01-06 15:05:24 +08:00
Родитель e1710ec7c9
Коммит 13ce7a2e81
6 изменённых файлов: 43 добавлений и 24 удалений

Просмотреть файл

@ -600,19 +600,9 @@ CSSStyleSheet::HasRules() const
}
void
CSSStyleSheet::SetEnabled(bool aEnabled)
CSSStyleSheet::EnabledStateChangedInternal()
{
// Internal method, so callers must handle BeginUpdate/EndUpdate
bool oldDisabled = mDisabled;
mDisabled = !aEnabled;
if (mInner->mComplete && oldDisabled != mDisabled) {
ClearRuleCascades();
if (mDocument) {
mDocument->SetStyleSheetApplicableState(this, !mDisabled);
}
}
}
CSSStyleSheet*

Просмотреть файл

@ -115,17 +115,6 @@ public:
bool HasRules() const;
/**
* Set the stylesheet to be enabled. This may or may not make it
* applicable. Note that this WILL inform the sheet's document of
* its new applicable state if the state changes but WILL NOT call
* BeginUpdate() or EndUpdate() on the document -- calling those is
* the caller's responsibility. This allows use of SetEnabled when
* batched updates are desired. If you want updates handled for
* you, see nsIDOMStyleSheet::SetDisabled().
*/
void SetEnabled(bool aEnabled);
// style sheet owner info
CSSStyleSheet* GetParentSheet() const; // may be null
void SetOwningDocument(nsIDocument* aDocument);
@ -243,6 +232,8 @@ protected:
uint32_t aIndex, ErrorResult& aRv);
void DeleteRuleInternal(uint32_t aIndex, ErrorResult& aRv);
void EnabledStateChangedInternal();
RefPtr<CSSStyleSheet> mNext;
CSSStyleSheet* mParent; // weak ref
css::ImportRule* mOwnerRule; // weak ref

Просмотреть файл

@ -1307,7 +1307,7 @@ Loader::PrepareSheet(StyleSheet* aSheet,
aSheet->SetMedia(mediaList);
aSheet->SetTitle(aTitle);
sheet->SetEnabled(!aIsAlternate);
aSheet->SetEnabled(!aIsAlternate);
sheet->SetScopeElement(aScopeElement);
}

Просмотреть файл

@ -84,6 +84,8 @@ protected:
uint32_t aIndex, ErrorResult& aRv);
void DeleteRuleInternal(uint32_t aIndex, ErrorResult& aRv);
void EnabledStateChangedInternal() {}
private:
void DropSheet();

Просмотреть файл

@ -115,6 +115,22 @@ StyleSheet::SetComplete()
}
}
void
StyleSheet::SetEnabled(bool aEnabled)
{
// Internal method, so callers must handle BeginUpdate/EndUpdate
bool oldDisabled = mDisabled;
mDisabled = !aEnabled;
if (IsComplete() && oldDisabled != mDisabled) {
EnabledStateChanged();
if (mDocument) {
mDocument->SetStyleSheetApplicableState(this, !mDisabled);
}
}
}
StyleSheetInfo::StyleSheetInfo(CORSMode aCORSMode,
ReferrerPolicy aReferrerPolicy,
const dom::SRIMetadata& aIntegrity)
@ -282,6 +298,12 @@ StyleSheet::DeleteRule(uint32_t aIndex,
FORWARD_INTERNAL(DeleteRuleInternal, (aIndex, aRv))
}
void
StyleSheet::EnabledStateChanged()
{
FORWARD_INTERNAL(EnabledStateChangedInternal, ())
}
#undef FORWARD_INTERNAL
void

Просмотреть файл

@ -67,6 +67,17 @@ public:
bool IsComplete() const;
void SetComplete();
/**
* Set the stylesheet to be enabled. This may or may not make it
* applicable. Note that this WILL inform the sheet's document of
* its new applicable state if the state changes but WILL NOT call
* BeginUpdate() or EndUpdate() on the document -- calling those is
* the caller's responsibility. This allows use of SetEnabled when
* batched updates are desired. If you want updates handled for
* you, see nsIDOMStyleSheet::SetDisabled().
*/
void SetEnabled(bool aEnabled);
MOZ_DECL_STYLO_METHODS(CSSStyleSheet, ServoStyleSheet)
// Whether the sheet is for an inline <style> element.
@ -198,6 +209,9 @@ protected:
// Drop our reference to mMedia
void DropMedia();
// Called from SetEnabled when the enabled state changed.
void EnabledStateChanged();
nsString mTitle;
nsIDocument* mDocument; // weak ref; parents maintain this for their children
nsINode* mOwningNode; // weak ref