Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: Source/core/inspector/InspectorCSSAgent.cpp

Issue 441873010: DevTools: [SSP] Implement adding new rule in user stylesheet (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: minor changes Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010, Google Inc. All rights reserved. 2 * Copyright (C) 2010, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 private: 309 private:
310 RefPtrWillBeMember<InspectorStyleSheet> m_styleSheet; 310 RefPtrWillBeMember<InspectorStyleSheet> m_styleSheet;
311 InspectorCSSId m_cssId; 311 InspectorCSSId m_cssId;
312 String m_selector; 312 String m_selector;
313 String m_oldSelector; 313 String m_oldSelector;
314 }; 314 };
315 315
316 class InspectorCSSAgent::AddRuleAction FINAL : public InspectorCSSAgent::StyleSh eetAction { 316 class InspectorCSSAgent::AddRuleAction FINAL : public InspectorCSSAgent::StyleSh eetAction {
317 WTF_MAKE_NONCOPYABLE(AddRuleAction); 317 WTF_MAKE_NONCOPYABLE(AddRuleAction);
318 public: 318 public:
319 AddRuleAction(InspectorStyleSheet* styleSheet, const String& selector) 319 AddRuleAction(InspectorStyleSheet* styleSheet, const String& ruleText, const SourceRange& location)
320 : InspectorCSSAgent::StyleSheetAction("AddRule") 320 : InspectorCSSAgent::StyleSheetAction("AddRule")
321 , m_styleSheet(styleSheet) 321 , m_styleSheet(styleSheet)
322 , m_selector(selector) 322 , m_ruleText(ruleText)
323 , m_location(location)
323 { 324 {
324 } 325 }
325 326
326 virtual bool perform(ExceptionState& exceptionState) OVERRIDE 327 virtual bool perform(ExceptionState& exceptionState) OVERRIDE
327 { 328 {
328 return redo(exceptionState); 329 return redo(exceptionState);
329 } 330 }
330 331
331 virtual bool undo(ExceptionState& exceptionState) OVERRIDE 332 virtual bool undo(ExceptionState& exceptionState) OVERRIDE
332 { 333 {
333 return m_styleSheet->deleteRule(m_newId, exceptionState); 334 return m_styleSheet->deleteRule(m_newId, m_oldText, exceptionState);
334 } 335 }
335 336
336 virtual bool redo(ExceptionState& exceptionState) OVERRIDE 337 virtual bool redo(ExceptionState& exceptionState) OVERRIDE
337 { 338 {
338 CSSStyleRule* cssStyleRule = m_styleSheet->addRule(m_selector, exception State); 339 if (!m_styleSheet->getText(&m_oldText))
340 return false;
341 CSSStyleRule* cssStyleRule = m_styleSheet->addRule(m_ruleText, m_locatio n, exceptionState);
339 if (exceptionState.hadException()) 342 if (exceptionState.hadException())
340 return false; 343 return false;
341 m_newId = m_styleSheet->ruleId(cssStyleRule); 344 m_newId = m_styleSheet->ruleId(cssStyleRule);
342 return true; 345 return true;
343 } 346 }
344 347
345 InspectorCSSId newRuleId() { return m_newId; } 348 InspectorCSSId newRuleId() { return m_newId; }
346 349
347 virtual void trace(Visitor* visitor) OVERRIDE 350 virtual void trace(Visitor* visitor) OVERRIDE
348 { 351 {
349 visitor->trace(m_styleSheet); 352 visitor->trace(m_styleSheet);
350 InspectorCSSAgent::StyleSheetAction::trace(visitor); 353 InspectorCSSAgent::StyleSheetAction::trace(visitor);
351 } 354 }
352 355
353 private: 356 private:
354 RefPtrWillBeMember<InspectorStyleSheet> m_styleSheet; 357 RefPtrWillBeMember<InspectorStyleSheet> m_styleSheet;
355 InspectorCSSId m_newId; 358 InspectorCSSId m_newId;
356 String m_selector; 359 String m_ruleText;
357 String m_oldSelector; 360 String m_oldText;
361 SourceRange m_location;
358 }; 362 };
359 363
360 // static 364 // static
361 CSSStyleRule* InspectorCSSAgent::asCSSStyleRule(CSSRule* rule) 365 CSSStyleRule* InspectorCSSAgent::asCSSStyleRule(CSSRule* rule)
362 { 366 {
363 if (!rule || rule->type() != CSSRule::STYLE_RULE) 367 if (!rule || rule->type() != CSSRule::STYLE_RULE)
364 return 0; 368 return 0;
365 return toCSSStyleRule(rule); 369 return toCSSStyleRule(rule);
366 } 370 }
367 371
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 if (!inspectorStyleSheet) { 929 if (!inspectorStyleSheet) {
926 *errorString = "No target stylesheet found"; 930 *errorString = "No target stylesheet found";
927 return; 931 return;
928 } 932 }
929 933
930 updateActiveStyleSheets(document, ExistingFrontendRefresh); 934 updateActiveStyleSheets(document, ExistingFrontendRefresh);
931 935
932 *outStyleSheetId = inspectorStyleSheet->id(); 936 *outStyleSheetId = inspectorStyleSheet->id();
933 } 937 }
934 938
935 void InspectorCSSAgent::addRule(ErrorString* errorString, const String& styleShe etId, const String& selector, RefPtr<TypeBuilder::CSS::CSSRule>& result) 939 void InspectorCSSAgent::addRule(ErrorString* errorString, const String& styleShe etId, const String& ruleText, const RefPtr<JSONObject>& location, RefPtr<TypeBui lder::CSS::CSSRule>& result)
936 { 940 {
937 InspectorStyleSheet* inspectorStyleSheet = assertInspectorStyleSheetForId(er rorString, styleSheetId); 941 InspectorStyleSheet* inspectorStyleSheet = assertInspectorStyleSheetForId(er rorString, styleSheetId);
938 if (!inspectorStyleSheet) 942 if (!inspectorStyleSheet)
939 return; 943 return;
944 SourceRange ruleLocation;
945 if (!jsonRangeToSourceRange(errorString, inspectorStyleSheet, location, &rul eLocation))
946 return;
940 947
941 TrackExceptionState exceptionState; 948 TrackExceptionState exceptionState;
942 RefPtrWillBeRawPtr<AddRuleAction> action = adoptRefWillBeNoop(new AddRuleAct ion(inspectorStyleSheet, selector)); 949 RefPtrWillBeRawPtr<AddRuleAction> action = adoptRefWillBeNoop(new AddRuleAct ion(inspectorStyleSheet, ruleText, ruleLocation));
943 bool success = m_domAgent->history()->perform(action, exceptionState); 950 bool success = m_domAgent->history()->perform(action, exceptionState);
944 if (!success) { 951 if (!success) {
945 *errorString = InspectorDOMAgent::toErrorString(exceptionState); 952 *errorString = InspectorDOMAgent::toErrorString(exceptionState);
946 return; 953 return;
947 } 954 }
948 955
949 InspectorCSSId ruleId = action->newRuleId(); 956 InspectorCSSId ruleId = action->newRuleId();
950 CSSStyleRule* rule = inspectorStyleSheet->ruleForId(ruleId); 957 CSSStyleRule* rule = inspectorStyleSheet->ruleForId(ruleId);
951 result = inspectorStyleSheet->buildObjectForRule(rule, buildMediaListChain(r ule)); 958 result = inspectorStyleSheet->buildObjectForRule(rule, buildMediaListChain(r ule));
952 } 959 }
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
1446 visitor->trace(m_invalidatedDocuments); 1453 visitor->trace(m_invalidatedDocuments);
1447 visitor->trace(m_nodeToInspectorStyleSheet); 1454 visitor->trace(m_nodeToInspectorStyleSheet);
1448 visitor->trace(m_documentToViaInspectorStyleSheet); 1455 visitor->trace(m_documentToViaInspectorStyleSheet);
1449 #endif 1456 #endif
1450 visitor->trace(m_inspectorUserAgentStyleSheet); 1457 visitor->trace(m_inspectorUserAgentStyleSheet);
1451 InspectorBaseAgent::trace(visitor); 1458 InspectorBaseAgent::trace(visitor);
1452 } 1459 }
1453 1460
1454 } // namespace blink 1461 } // namespace blink
1455 1462
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698