PassRefPtr<InspectorObject> InspectorStyleSheet::buildObjectForRule(CSSStyleRule* rule) { CSSStyleSheet* styleSheet = pageStyleSheet(); if (!styleSheet) return 0; RefPtr<InspectorObject> result = InspectorObject::create(); result->setString("selectorText", rule->selectorText()); result->setString("cssText", rule->cssText()); result->setNumber("sourceLine", rule->sourceLine()); result->setString("documentURL", m_documentURL); RefPtr<InspectorObject> parentStyleSheetValue = InspectorObject::create(); parentStyleSheetValue->setString("id", id()); parentStyleSheetValue->setString("href", styleSheet->href()); result->setObject("parentStyleSheet", parentStyleSheetValue.release()); result->setString("origin", m_origin); RefPtr<CSSRuleSourceData> sourceData; if (ensureParsedDataReady()) sourceData = ruleSourceDataFor(rule->style()); if (sourceData) { result->setNumber("selectorStartOffset", sourceData->selectorListRange.start); result->setNumber("selectorEndOffset", sourceData->selectorListRange.end); } result->setObject("style", buildObjectForStyle(rule->style())); if (canBind()) result->setString("id", fullRuleId(rule)); return result.release(); }
static int assign_in_dict(Word dp, Word val ARG_LD) { deRef(val); if ( !canBind(*val) ) { *dp = *val; } else if ( isAttVar(*val) ) { *dp = makeRef(val); } else { if ( dp < val ) { if ( unlikely(tTop+1 >= tMax) ) return TRAIL_OVERFLOW; setVar(*dp); Trail(val, makeRef(dp)); } else { *dp = makeRef(val); } } return TRUE; }