int CSSStyleSheet::addRule(const String& selector, const String& style, int index, ExceptionCode& ec) { insertRule(selector + " { " + style + " }", index, ec); // As per Microsoft documentation, always return -1. return -1; }
ExceptionOr<unsigned> CSSStyleSheet::deprecatedInsertRule(const String& ruleString) { if (auto* document = ownerDocument()) document->addConsoleMessage(MessageSource::JS, MessageLevel::Warning, ASCIILiteral("Calling CSSStyleSheet.insertRule() with one argument is deprecated. Please pass the index argument as well: insertRule(x, 0).")); return insertRule(ruleString, 0); }
void StatusIcons::loadStorages() { clearStorages(); QList<QString> storages = FileStorage::availSubStorages(RSR_STORAGE_STATUSICONS) << FILE_STORAGE_SHARED_DIR; foreach(const QString &substorage, storages) { LOG_DEBUG(QString("Status icon storage added, storage=%1").arg(substorage)); IconStorage *storage = new IconStorage(RSR_STORAGE_STATUSICONS,substorage,this); FStorages.insert(substorage,storage); QString pattern = storage->storageProperty(STATUSICONS_STORAGE_PATTERN); if (!pattern.isEmpty()) { insertRule(pattern,substorage,IStatusIcons::DefaultRule); FStatusRules += pattern; } Action *action = new Action(FCustomIconMenu); action->setCheckable(true); action->setIcon(storage->getIcon(SIK_ONLINE)); action->setText(storage->storageProperty(FILE_STORAGE_NAME,substorage)); action->setData(ADR_SUBSTORAGE,substorage); connect(action,SIGNAL(triggered(bool)),SLOT(onSetCustomIconsetByAction(bool))); FCustomIconActions.insert(substorage,action); FCustomIconMenu->addAction(action,AG_DEFAULT,true); }
unsigned CSSStyleSheet::insertRule(const String& rule, ExceptionState& exceptionState) { Deprecation::countDeprecation( currentExecutionContext(V8PerIsolateData::mainThreadIsolate()), UseCounter::CSSStyleSheetInsertRuleOptionalArg); return insertRule(rule, 0, exceptionState); }
void cssMediaRule() { cssText(); cssRules(); insertRule(); deleteRule(); media(); cache(); }
int CSSStyleSheet::addRule(const String& selector, const String& style, int index, ExceptionCode& ec) { StringBuilder text; text.append(selector); text.appendLiteral(" { "); text.append(style); if (!style.isEmpty()) text.append(' '); text.append('}'); insertRule(text.toString(), index, ec); // As per Microsoft documentation, always return -1. return -1; }
ExceptionOr<int> CSSStyleSheet::addRule(const String& selector, const String& style, std::optional<unsigned> index) { StringBuilder text; text.append(selector); text.appendLiteral(" { "); text.append(style); if (!style.isEmpty()) text.append(' '); text.append('}'); auto insertRuleResult = insertRule(text.toString(), index.value_or(length())); if (insertRuleResult.hasException()) return insertRuleResult.releaseException(); // As per Microsoft documentation, always return -1. return -1; }
eFlag Tree::processVertexAfterParse(Sit S, Vertex *v, TreeConstructer* tc) { //be careful with this test, it might be moved deeper inside this //function if needed if (v -> vt & VT_TOP_FOREIGN) { popVertex(); return OK; } XSL_OP theOp; if (isXSLElement(v)) { XSLElement *x = toX(v); theOp = x -> op; if (theOp != XSL_IMPORT) updateImportStatus(); switch(theOp) { //catch xsl:use-attribute-sets case XSL_ELEMENT: case XSL_COPY: { E( extractUsedSets(S, toE(v)) ); popVertex(); }; break; case XSL_IMPORT: { if (subtrees.getCurrent() -> getStructure() -> getTopLevelFound()) { Err2(S, E_ELEM_CONTAINS_ELEM, xslOpNames[XSL_STYLESHEET], xslOpNames[XSL_IMPORT]); } }; // no break case XSL_INCLUDE: { Attribute *a = NZ( x -> atts.find(XSLA_HREF) ); GP( Tree ) srcTree; const Str& base = S.findBaseURI(a -> getSubtreeInfo() -> getBaseURI()); Str absolute; makeAbsoluteURI(S, a -> cont, base, absolute); if (S.getProcessor()) { E( S.getProcessor() -> readTreeFromURI(S, srcTree, a -> cont, base, FALSE) ); srcTree.keep(); } else { //Str absolute; //makeAbsoluteURI(a -> cont, base, absolute); srcTree = new Tree(absolute, FALSE); DataLine d; E( d.open(S, absolute, DLMODE_READ, /* argList = */ NULL) ); E( (*srcTree).parse(S, &d) ); E( d.close(S) ); } Element *theSheet=(*srcTree).findStylesheet((*srcTree).getRoot()); if (!theSheet) Warn1(S, W_NO_STYLESHEET, (char*)(a -> cont)); dropCurrentElement(v); if (!theSheet) // to prevent segfault after include/import failure break; OutputterObj source; //we start a subtree to record where the nodes come from //when including, we use the old structure //when importing, Tree creates a new one E( startSubtree(S, (*srcTree).getURI(), theOp) ); //set extension namespaces for subtree //(*srcTree).speakDebug(); //merge it into the current tree E( tc -> parseUsingSAXForAWhile(S, source, absolute, TRUE, (Tree*)srcTree, theSheet -> namespaces) ); //first we have to deal with ext. and excl. namespaces Attribute *attr; QName q; //exclusions q.setLocal((*srcTree).unexpand("exclude-result-prefixes")); attr = theSheet->atts.find(q); if (attr) E(pushNamespacePrefixes(S, attr->cont, XSLA_EXCL_RES_PREFIXES)); //extensions q.setLocal((*srcTree).unexpand("extension-element-prefixes")); attr = theSheet->atts.find(q); if (attr) E(pushNamespacePrefixes(S, attr->cont, XSLA_EXT_ELEM_PREFIXES)); if (theSheet) E( theSheet -> contents.copy(S, source) ); E( tc -> parseUsingSAXForAWhileDone(S, source, TRUE) ); // end the subtree E( endSubtree(S, theOp) ); }; break; case XSL_OUTPUT: { int i, attsNumber = x -> atts.number(); Attribute *theAtt; for (i = 0; i < attsNumber; i++) { theAtt = toA(x -> atts[i]); switch(theAtt -> op) { case XSLA_METHOD: { QName q; EQName eq; E( x -> setLogical(S, q, theAtt -> cont, FALSE) ); expandQ(q, eq); E( outputDef.setItemEQName(S, XSLA_METHOD, eq, v, v -> getImportPrecedence()) ); }; break; case XSLA_CDATA_SECT_ELEMS: { QName q; Bool someRemains; Str listPart; char *p = theAtt -> cont; do { someRemains = getWhDelimString(p, listPart); if (someRemains) { E( x -> setLogical(S, q, listPart, TRUE) ); EQName expanded; expandQ(q, expanded); E( outputDef.setItemEQName(S, XSLA_CDATA_SECT_ELEMS, expanded, v, v -> getImportPrecedence()) ); }; } while (someRemains); }; break; case XSLA_NONE: //skip other namespaces break; default: { E( outputDef.setItemStr(S, theAtt -> op, theAtt -> cont, theAtt, theAtt -> getImportPrecedence()) ); }; }; } popVertex(); }; break; case XSL_NAMESPACE_ALIAS: { Phrase style, result, sUri, rUri; Attribute *sp = NZ( x -> atts.find(XSLA_STYLESHEET_PREFIX) ); Attribute *rp = NZ( x -> atts.find(XSLA_RESULT_PREFIX) ); if (sp -> cont == "#default") style = UNDEF_PHRASE; else dict().insert(sp -> cont, style); if (rp -> cont == "#default") result = UNDEF_PHRASE; else dict().insert(rp -> cont, result); int i; i = pendingNS().findNdx(style); if (i != -1) sUri = toNS(pendingNS().operator[](i)) -> uri; else Err1(S, E_EX_NAMESPACE_UNKNOWN, (char*) sp -> cont); i = pendingNS().findNdx(result); if (i != -1) rUri = toNS(pendingNS().operator[](i)) -> uri; else Err1(S, E_EX_NAMESPACE_UNKNOWN, (char*) rp -> cont); aliases().insertAlias(sUri, rUri, result, v -> getImportPrecedence(), x); popVertex(); }; break; case XSL_TEMPLATE: { E( insertRule(S, x) ); popVertex(); }; break; case XSL_ATTRIBUTE_SET: { QName name; E( x -> setLogical(S, name, NZ( x -> atts.find(XSLA_NAME)) -> cont, FALSE) ); AttSet *ptr = attSets().insert(name); E( extractUsedSets(S, toE(v)) ); if (x -> attSetNames(FALSE)) { for (int i = 0; i < x -> attSetNames(FALSE) -> number(); i++) ptr -> insertUses(*(x -> attSetNames(FALSE) -> operator[] (i))); } XSLElement *son; for (int i = 0; i < x -> contents.number(); i++) { sabassert(isXSLElement(x -> contents[i]) && toX(x -> contents[i]) -> op == XSL_ATTRIBUTE); son = toX(x -> contents[i]); E( son -> setLogical(S, name, NZ( son -> atts.find(XSLA_NAME)) -> cont, FALSE) ); ptr -> insertAttributeDef(son, name); } popVertex(); }; break; case XSL_STYLESHEET: case XSL_TRANSFORM: { popVertex(); }; break; case XSL_VARIABLE: case XSL_PARAM: { // only look at top-levels Vertex *par = v -> parent; if (par && isXSLElement(par) && (toX(par) -> op == XSL_STYLESHEET || toX(par) -> op == XSL_TRANSFORM)) { // is top-level -> insert into directory, //with error if there already is an entry // with the same import precedence // find name first QName name; E( x -> setLogical(S, name, NZ( x -> atts.find(XSLA_NAME)) -> cont, FALSE) ); E( toplevelVars.insert(S, name, x) ); } popVertex(); }; break; case XSL_STRIP_SPACE: { SpaceNameList &foo = subtrees.getCurrent() -> getStructure() -> strippedNames(); E( getSpaceNames(S, *x, NZ(x -> atts.find(XSLA_ELEMENTS)) -> cont, foo) ); popVertex(); }; break; case XSL_PRESERVE_SPACE: { SpaceNameList &foo = subtrees.getCurrent() -> getStructure() -> preservedNames(); E( getSpaceNames(S, *x, NZ(x -> atts.find(XSLA_ELEMENTS)) -> cont, foo) ); popVertex(); }; break; default: popVertex(); } //the literal output element may have some xsl features } else { //isXSLElement updateImportStatus(); if (XSLTree) { E( extractUsedSets(S, toE(v)) ); popVertex(); } else { popVertex(); } } return OK; }