mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 07:15:46 +00:00
bbda2f1225
We share the inner object across sheets from the same URL, so what happens here is that, once the sheet parses and loads, we call SetEnabled() on the first sheet, which sets the inner bit, then calls ApplicableStateChanged. That set actually turned the second sheet complete, so when inserting the sheet, we think that the second sheet is already enabled, and thus in the author data, and try to insert before it. Of course there's nothing there, so we panic. We rely on calling SetEnabled() on all the sheets already to insert them in the styleset / author data, so this makes it clearer and fixes the bug by moving the state to each individual sheet. Differential Revision: https://phabricator.services.mozilla.com/D3798 --HG-- extra : moz-landing-system : lando
41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* 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/. */
|
|
|
|
#ifndef mozilla_StyleSheetInlines_h
|
|
#define mozilla_StyleSheetInlines_h
|
|
|
|
#include "mozilla/StyleSheet.h"
|
|
#include "nsINode.h"
|
|
|
|
namespace mozilla {
|
|
|
|
void
|
|
StyleSheet::SetURIs(nsIURI* aSheetURI,
|
|
nsIURI* aOriginalSheetURI,
|
|
nsIURI* aBaseURI)
|
|
{
|
|
MOZ_ASSERT(aSheetURI && aBaseURI, "null ptr");
|
|
MOZ_ASSERT(!HasRules() && !IsComplete(),
|
|
"Can't call SetURIs on sheets that are complete or have rules");
|
|
StyleSheetInfo& info = Inner();
|
|
info.mSheetURI = aSheetURI;
|
|
info.mOriginalSheetURI = aOriginalSheetURI;
|
|
info.mBaseURI = aBaseURI;
|
|
}
|
|
|
|
dom::ParentObject
|
|
StyleSheet::GetParentObject() const
|
|
{
|
|
if (mOwningNode) {
|
|
return dom::ParentObject(mOwningNode);
|
|
}
|
|
return dom::ParentObject(mParent);
|
|
}
|
|
|
|
}
|
|
|
|
#endif // mozilla_StyleSheetInlines_h
|