OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/inspector/LayoutEditor.h" | 6 #include "core/inspector/LayoutEditor.h" |
7 | 7 |
8 #include "core/css/CSSComputedStyleDeclaration.h" | 8 #include "core/css/CSSComputedStyleDeclaration.h" |
9 #include "core/dom/NodeComputedStyle.h" | 9 #include "core/dom/NodeComputedStyle.h" |
10 #include "core/frame/FrameView.h" | 10 #include "core/frame/FrameView.h" |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 FloatQuad marginHandles = translateAndProject(contentMeans, orthogonals, mar
gin, 12); | 183 FloatQuad marginHandles = translateAndProject(contentMeans, orthogonals, mar
gin, 12); |
184 appendAnchorFor(anchors.get(), "margin", "margin-top", marginHandles.p1(), o
rthogonals.p1()); | 184 appendAnchorFor(anchors.get(), "margin", "margin-top", marginHandles.p1(), o
rthogonals.p1()); |
185 appendAnchorFor(anchors.get(), "margin", "margin-right", marginHandles.p2(),
orthogonals.p2()); | 185 appendAnchorFor(anchors.get(), "margin", "margin-right", marginHandles.p2(),
orthogonals.p2()); |
186 appendAnchorFor(anchors.get(), "margin", "margin-bottom", marginHandles.p3()
, orthogonals.p3()); | 186 appendAnchorFor(anchors.get(), "margin", "margin-bottom", marginHandles.p3()
, orthogonals.p3()); |
187 appendAnchorFor(anchors.get(), "margin", "margin-left", marginHandles.p4(),
orthogonals.p4()); | 187 appendAnchorFor(anchors.get(), "margin", "margin-left", marginHandles.p4(),
orthogonals.p4()); |
188 | 188 |
189 object->setArray("anchors", anchors.release()); | 189 object->setArray("anchors", anchors.release()); |
190 return object.release(); | 190 return object.release(); |
191 } | 191 } |
192 | 192 |
193 RefPtrWillBeRawPtr<CSSPrimitiveValue> LayoutEditor::getPropertyCSSValue(CSSPrope
rtyID property) const | 193 RefPtr<CSSPrimitiveValue> LayoutEditor::getPropertyCSSValue(CSSPropertyID proper
ty) const |
194 { | 194 { |
195 RefPtrWillBeRawPtr<CSSStyleDeclaration> style = m_cssAgent->findEffectiveDec
laration(m_element.get(), property); | 195 RefPtrWillBeRawPtr<CSSStyleDeclaration> style = m_cssAgent->findEffectiveDec
laration(m_element.get(), property); |
196 if (!style) | 196 if (!style) |
197 return nullptr; | 197 return nullptr; |
198 | 198 |
199 RefPtrWillBeRawPtr<CSSValue> cssValue = style->getPropertyCSSValueInternal(p
roperty); | 199 RefPtr<CSSValue> cssValue = style->getPropertyCSSValueInternal(property); |
200 if (!cssValue || !cssValue->isPrimitiveValue()) | 200 if (!cssValue || !cssValue->isPrimitiveValue()) |
201 return nullptr; | 201 return nullptr; |
202 | 202 |
203 return toCSSPrimitiveValue(cssValue.get()); | 203 return toCSSPrimitiveValue(cssValue.get()); |
204 } | 204 } |
205 | 205 |
206 PassRefPtr<JSONObject> LayoutEditor::createValueDescription(const String& proper
tyName) const | 206 PassRefPtr<JSONObject> LayoutEditor::createValueDescription(const String& proper
tyName) const |
207 { | 207 { |
208 RefPtrWillBeRawPtr<CSSPrimitiveValue> cssValue = getPropertyCSSValue(cssProp
ertyID(propertyName)); | 208 RefPtr<CSSPrimitiveValue> cssValue = getPropertyCSSValue(cssPropertyID(prope
rtyName)); |
209 if (cssValue && !(cssValue->isLength() || cssValue->isPercentage())) | 209 if (cssValue && !(cssValue->isLength() || cssValue->isPercentage())) |
210 return nullptr; | 210 return nullptr; |
211 | 211 |
212 RefPtr<JSONObject> object = JSONObject::create(); | 212 RefPtr<JSONObject> object = JSONObject::create(); |
213 object->setNumber("value", cssValue ? cssValue->getFloatValue() : 0); | 213 object->setNumber("value", cssValue ? cssValue->getFloatValue() : 0); |
214 CSSPrimitiveValue::UnitType unitType = cssValue ? cssValue->typeWithCalcReso
lved() : CSSPrimitiveValue::UnitType::Pixels; | 214 CSSPrimitiveValue::UnitType unitType = cssValue ? cssValue->typeWithCalcReso
lved() : CSSPrimitiveValue::UnitType::Pixels; |
215 object->setString("unit", CSSPrimitiveValue::unitTypeToString(unitType)); | 215 object->setString("unit", CSSPrimitiveValue::unitTypeToString(unitType)); |
216 // TODO: Support an editing of other popular units like: em, rem | 216 // TODO: Support an editing of other popular units like: em, rem |
217 object->setBoolean("mutable", isMutableUnitType(unitType)); | 217 object->setBoolean("mutable", isMutableUnitType(unitType)); |
218 return object.release(); | 218 return object.release(); |
219 } | 219 } |
220 | 220 |
221 void LayoutEditor::appendAnchorFor(JSONArray* anchors, const String& type, const
String& propertyName, const FloatPoint& position, const FloatPoint& orthogonalV
ector) const | 221 void LayoutEditor::appendAnchorFor(JSONArray* anchors, const String& type, const
String& propertyName, const FloatPoint& position, const FloatPoint& orthogonalV
ector) const |
222 { | 222 { |
223 RefPtr<JSONObject> description = createValueDescription(propertyName); | 223 RefPtr<JSONObject> description = createValueDescription(propertyName); |
224 if (description) | 224 if (description) |
225 anchors->pushObject(createAnchor(position, type, propertyName, orthogona
lVector, description.release())); | 225 anchors->pushObject(createAnchor(position, type, propertyName, orthogona
lVector, description.release())); |
226 } | 226 } |
227 | 227 |
228 void LayoutEditor::overlayStartedPropertyChange(const String& anchorName) | 228 void LayoutEditor::overlayStartedPropertyChange(const String& anchorName) |
229 { | 229 { |
230 m_changingProperty = cssPropertyID(anchorName); | 230 m_changingProperty = cssPropertyID(anchorName); |
231 if (!m_element || !m_changingProperty) | 231 if (!m_element || !m_changingProperty) |
232 return; | 232 return; |
233 | 233 |
234 RefPtrWillBeRawPtr<CSSPrimitiveValue> cssValue = getPropertyCSSValue(m_chang
ingProperty); | 234 RefPtr<CSSPrimitiveValue> cssValue = getPropertyCSSValue(m_changingProperty)
; |
235 m_valueUnitType = cssValue ? cssValue->typeWithCalcResolved() : CSSPrimitive
Value::UnitType::Pixels; | 235 m_valueUnitType = cssValue ? cssValue->typeWithCalcResolved() : CSSPrimitive
Value::UnitType::Pixels; |
236 if (!isMutableUnitType(m_valueUnitType)) | 236 if (!isMutableUnitType(m_valueUnitType)) |
237 return; | 237 return; |
238 | 238 |
239 switch (m_valueUnitType) { | 239 switch (m_valueUnitType) { |
240 case CSSPrimitiveValue::UnitType::Pixels: | 240 case CSSPrimitiveValue::UnitType::Pixels: |
241 m_factor = 1; | 241 m_factor = 1; |
242 break; | 242 break; |
243 case CSSPrimitiveValue::UnitType::Ems: | 243 case CSSPrimitiveValue::UnitType::Ems: |
244 m_factor = m_element->computedStyle()->computedFontSize(); | 244 m_factor = m_element->computedStyle()->computedFontSize(); |
(...skipping 23 matching lines...) Expand all Loading... |
268 | 268 |
269 void LayoutEditor::overlayEndedPropertyChange() | 269 void LayoutEditor::overlayEndedPropertyChange() |
270 { | 270 { |
271 m_changingProperty = CSSPropertyInvalid; | 271 m_changingProperty = CSSPropertyInvalid; |
272 m_propertyInitialValue = 0; | 272 m_propertyInitialValue = 0; |
273 m_factor = 0; | 273 m_factor = 0; |
274 m_valueUnitType = CSSPrimitiveValue::UnitType::Unknown; | 274 m_valueUnitType = CSSPrimitiveValue::UnitType::Unknown; |
275 } | 275 } |
276 | 276 |
277 } // namespace blink | 277 } // namespace blink |
OLD | NEW |