OLD | NEW |
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 739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 if (!state_->booleanProperty(CSSAgentState::kCssAgentEnabled, false)) { | 750 if (!state_->booleanProperty(CSSAgentState::kCssAgentEnabled, false)) { |
751 // We were disabled while fetching resources. | 751 // We were disabled while fetching resources. |
752 return; | 752 return; |
753 } | 753 } |
754 | 754 |
755 instrumenting_agents_->addInspectorCSSAgent(this); | 755 instrumenting_agents_->addInspectorCSSAgent(this); |
756 dom_agent_->SetDOMListener(this); | 756 dom_agent_->SetDOMListener(this); |
757 HeapVector<Member<Document>> documents = dom_agent_->Documents(); | 757 HeapVector<Member<Document>> documents = dom_agent_->Documents(); |
758 for (Document* document : documents) | 758 for (Document* document : documents) |
759 UpdateActiveStyleSheets(document); | 759 UpdateActiveStyleSheets(document); |
760 was_enabled_ = true; | |
761 } | 760 } |
762 | 761 |
763 Response InspectorCSSAgent::disable() { | 762 Response InspectorCSSAgent::disable() { |
764 Reset(); | 763 Reset(); |
765 dom_agent_->SetDOMListener(nullptr); | 764 dom_agent_->SetDOMListener(nullptr); |
766 instrumenting_agents_->removeInspectorCSSAgent(this); | 765 instrumenting_agents_->removeInspectorCSSAgent(this); |
767 state_->setBoolean(CSSAgentState::kCssAgentEnabled, false); | 766 state_->setBoolean(CSSAgentState::kCssAgentEnabled, false); |
768 was_enabled_ = false; | |
769 resource_content_loader_->Cancel(resource_content_loader_client_id_); | 767 resource_content_loader_->Cancel(resource_content_loader_client_id_); |
770 state_->setBoolean(CSSAgentState::kRuleRecordingEnabled, false); | 768 state_->setBoolean(CSSAgentState::kRuleRecordingEnabled, false); |
771 SetCoverageEnabled(false); | 769 SetCoverageEnabled(false); |
772 return Response::OK(); | 770 return Response::OK(); |
773 } | 771 } |
774 | 772 |
775 void InspectorCSSAgent::DidCommitLoadForLocalFrame(LocalFrame* frame) { | 773 void InspectorCSSAgent::DidCommitLoadForLocalFrame(LocalFrame* frame) { |
776 if (frame == inspected_frames_->Root()) | 774 if (frame == inspected_frames_->Root()) |
777 Reset(); | 775 Reset(); |
778 } | 776 } |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
910 int node_id, | 908 int node_id, |
911 Maybe<protocol::CSS::CSSStyle>* inline_style, | 909 Maybe<protocol::CSS::CSSStyle>* inline_style, |
912 Maybe<protocol::CSS::CSSStyle>* attributes_style, | 910 Maybe<protocol::CSS::CSSStyle>* attributes_style, |
913 Maybe<protocol::Array<protocol::CSS::RuleMatch>>* matched_css_rules, | 911 Maybe<protocol::Array<protocol::CSS::RuleMatch>>* matched_css_rules, |
914 Maybe<protocol::Array<protocol::CSS::PseudoElementMatches>>* | 912 Maybe<protocol::Array<protocol::CSS::PseudoElementMatches>>* |
915 pseudo_id_matches, | 913 pseudo_id_matches, |
916 Maybe<protocol::Array<protocol::CSS::InheritedStyleEntry>>* | 914 Maybe<protocol::Array<protocol::CSS::InheritedStyleEntry>>* |
917 inherited_entries, | 915 inherited_entries, |
918 Maybe<protocol::Array<protocol::CSS::CSSKeyframesRule>>* | 916 Maybe<protocol::Array<protocol::CSS::CSSKeyframesRule>>* |
919 css_keyframes_rules) { | 917 css_keyframes_rules) { |
920 Response response = AssertEnabled(); | 918 Element* element = nullptr; |
| 919 Response response = dom_agent_->AssertElement(node_id, element); |
921 if (!response.isSuccess()) | 920 if (!response.isSuccess()) |
922 return response; | 921 return response; |
923 | 922 |
924 Element* element = nullptr; | |
925 response = dom_agent_->AssertElement(node_id, element); | |
926 if (!response.isSuccess()) | |
927 return response; | |
928 | |
929 Element* original_element = element; | 923 Element* original_element = element; |
930 PseudoId element_pseudo_id = element->GetPseudoId(); | 924 PseudoId element_pseudo_id = element->GetPseudoId(); |
931 if (element_pseudo_id) { | 925 if (element_pseudo_id) { |
932 element = element->ParentOrShadowHostElement(); | 926 element = element->ParentOrShadowHostElement(); |
933 if (!element) | 927 if (!element) |
934 return Response::Error("Pseudo element has no parent"); | 928 return Response::Error("Pseudo element has no parent"); |
935 } | 929 } |
936 | 930 |
937 Document* owner_document = element->ownerDocument(); | 931 Document* owner_document = element->ownerDocument(); |
938 // A non-active document has no styles. | 932 // A non-active document has no styles. |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 .setKeyframes(std::move(keyframes)) | 1085 .setKeyframes(std::move(keyframes)) |
1092 .build()); | 1086 .build()); |
1093 } | 1087 } |
1094 return css_keyframes_rules; | 1088 return css_keyframes_rules; |
1095 } | 1089 } |
1096 | 1090 |
1097 Response InspectorCSSAgent::getInlineStylesForNode( | 1091 Response InspectorCSSAgent::getInlineStylesForNode( |
1098 int node_id, | 1092 int node_id, |
1099 Maybe<protocol::CSS::CSSStyle>* inline_style, | 1093 Maybe<protocol::CSS::CSSStyle>* inline_style, |
1100 Maybe<protocol::CSS::CSSStyle>* attributes_style) { | 1094 Maybe<protocol::CSS::CSSStyle>* attributes_style) { |
1101 Response response = AssertEnabled(); | |
1102 if (!response.isSuccess()) | |
1103 return response; | |
1104 Element* element = nullptr; | 1095 Element* element = nullptr; |
1105 response = dom_agent_->AssertElement(node_id, element); | 1096 Response response = dom_agent_->AssertElement(node_id, element); |
1106 if (!response.isSuccess()) | 1097 if (!response.isSuccess()) |
1107 return response; | 1098 return response; |
1108 | 1099 |
1109 InspectorStyleSheetForInlineStyle* style_sheet = | 1100 InspectorStyleSheetForInlineStyle* style_sheet = |
1110 AsInspectorStyleSheet(element); | 1101 AsInspectorStyleSheet(element); |
1111 if (!style_sheet) | 1102 if (!style_sheet) |
1112 return Response::Error("Element is not a style sheet"); | 1103 return Response::Error("Element is not a style sheet"); |
1113 | 1104 |
1114 *inline_style = style_sheet->BuildObjectForStyle(element->style()); | 1105 *inline_style = style_sheet->BuildObjectForStyle(element->style()); |
1115 *attributes_style = BuildObjectForAttributesStyle(element); | 1106 *attributes_style = BuildObjectForAttributesStyle(element); |
1116 return Response::OK(); | 1107 return Response::OK(); |
1117 } | 1108 } |
1118 | 1109 |
1119 Response InspectorCSSAgent::getComputedStyleForNode( | 1110 Response InspectorCSSAgent::getComputedStyleForNode( |
1120 int node_id, | 1111 int node_id, |
1121 std::unique_ptr<protocol::Array<protocol::CSS::CSSComputedStyleProperty>>* | 1112 std::unique_ptr<protocol::Array<protocol::CSS::CSSComputedStyleProperty>>* |
1122 style) { | 1113 style) { |
1123 Response response = AssertEnabled(); | |
1124 if (!response.isSuccess()) | |
1125 return response; | |
1126 Node* node = nullptr; | 1114 Node* node = nullptr; |
1127 response = dom_agent_->AssertNode(node_id, node); | 1115 Response response = dom_agent_->AssertNode(node_id, node); |
1128 if (!response.isSuccess()) | 1116 if (!response.isSuccess()) |
1129 return response; | 1117 return response; |
1130 | 1118 |
1131 CSSComputedStyleDeclaration* computed_style_info = | 1119 CSSComputedStyleDeclaration* computed_style_info = |
1132 CSSComputedStyleDeclaration::Create(node, true); | 1120 CSSComputedStyleDeclaration::Create(node, true); |
1133 *style = protocol::Array<protocol::CSS::CSSComputedStyleProperty>::create(); | 1121 *style = protocol::Array<protocol::CSS::CSSComputedStyleProperty>::create(); |
1134 for (int id = firstCSSProperty; id <= lastCSSProperty; ++id) { | 1122 for (int id = firstCSSProperty; id <= lastCSSProperty; ++id) { |
1135 CSSPropertyID property_id = static_cast<CSSPropertyID>(id); | 1123 CSSPropertyID property_id = static_cast<CSSPropertyID>(id); |
1136 if (!CSSPropertyMetadata::IsEnabledProperty(property_id) || | 1124 if (!CSSPropertyMetadata::IsEnabledProperty(property_id) || |
1137 isShorthandProperty(property_id) || | 1125 isShorthandProperty(property_id) || |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1183 std::make_pair(simple_font_data->IsCustomFont() ? 1 : 0, family_name), | 1171 std::make_pair(simple_font_data->IsCustomFont() ? 1 : 0, family_name), |
1184 run_font_data.glyph_count_); | 1172 run_font_data.glyph_count_); |
1185 } | 1173 } |
1186 } | 1174 } |
1187 } | 1175 } |
1188 | 1176 |
1189 Response InspectorCSSAgent::getPlatformFontsForNode( | 1177 Response InspectorCSSAgent::getPlatformFontsForNode( |
1190 int node_id, | 1178 int node_id, |
1191 std::unique_ptr<protocol::Array<protocol::CSS::PlatformFontUsage>>* | 1179 std::unique_ptr<protocol::Array<protocol::CSS::PlatformFontUsage>>* |
1192 platform_fonts) { | 1180 platform_fonts) { |
1193 Response response = AssertEnabled(); | |
1194 if (!response.isSuccess()) | |
1195 return response; | |
1196 Node* node = nullptr; | 1181 Node* node = nullptr; |
1197 response = dom_agent_->AssertNode(node_id, node); | 1182 Response response = dom_agent_->AssertNode(node_id, node); |
1198 if (!response.isSuccess()) | 1183 if (!response.isSuccess()) |
1199 return response; | 1184 return response; |
1200 | 1185 |
1201 HashCountedSet<std::pair<int, String>> font_stats; | 1186 HashCountedSet<std::pair<int, String>> font_stats; |
1202 LayoutObject* root = node->GetLayoutObject(); | 1187 LayoutObject* root = node->GetLayoutObject(); |
1203 if (root) { | 1188 if (root) { |
1204 CollectPlatformFontsForLayoutObject(root, &font_stats); | 1189 CollectPlatformFontsForLayoutObject(root, &font_stats); |
1205 // Iterate upto two layers deep. | 1190 // Iterate upto two layers deep. |
1206 for (LayoutObject* child = root->SlowFirstChild(); child; | 1191 for (LayoutObject* child = root->SlowFirstChild(); child; |
1207 child = child->NextSibling()) { | 1192 child = child->NextSibling()) { |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1573 return InspectorDOMAgent::ToResponse(exception_state); | 1558 return InspectorDOMAgent::ToResponse(exception_state); |
1574 | 1559 |
1575 CSSStyleRule* rule = action->TakeRule(); | 1560 CSSStyleRule* rule = action->TakeRule(); |
1576 *result = BuildObjectForRule(rule); | 1561 *result = BuildObjectForRule(rule); |
1577 return Response::OK(); | 1562 return Response::OK(); |
1578 } | 1563 } |
1579 | 1564 |
1580 Response InspectorCSSAgent::forcePseudoState( | 1565 Response InspectorCSSAgent::forcePseudoState( |
1581 int node_id, | 1566 int node_id, |
1582 std::unique_ptr<protocol::Array<String>> forced_pseudo_classes) { | 1567 std::unique_ptr<protocol::Array<String>> forced_pseudo_classes) { |
1583 Response response = AssertEnabled(); | |
1584 if (!response.isSuccess()) | |
1585 return response; | |
1586 Element* element = nullptr; | 1568 Element* element = nullptr; |
1587 response = dom_agent_->AssertElement(node_id, element); | 1569 Response response = dom_agent_->AssertElement(node_id, element); |
1588 if (!response.isSuccess()) | 1570 if (!response.isSuccess()) |
1589 return response; | 1571 return response; |
1590 | 1572 |
1591 unsigned forced_pseudo_state = | 1573 unsigned forced_pseudo_state = |
1592 ComputePseudoClassMask(std::move(forced_pseudo_classes)); | 1574 ComputePseudoClassMask(std::move(forced_pseudo_classes)); |
1593 NodeIdToForcedPseudoState::iterator it = | 1575 NodeIdToForcedPseudoState::iterator it = |
1594 node_id_to_forced_pseudo_state_.find(node_id); | 1576 node_id_to_forced_pseudo_state_.find(node_id); |
1595 unsigned current_forced_pseudo_state = | 1577 unsigned current_forced_pseudo_state = |
1596 it == node_id_to_forced_pseudo_state_.end() ? 0 : it->value; | 1578 it == node_id_to_forced_pseudo_state_.end() ? 0 : it->value; |
1597 bool need_style_recalc = forced_pseudo_state != current_forced_pseudo_state; | 1579 bool need_style_recalc = forced_pseudo_state != current_forced_pseudo_state; |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1902 return nullptr; | 1884 return nullptr; |
1903 | 1885 |
1904 CSSStyleSheet& inspector_sheet = | 1886 CSSStyleSheet& inspector_sheet = |
1905 document->GetStyleEngine().EnsureInspectorStyleSheet(); | 1887 document->GetStyleEngine().EnsureInspectorStyleSheet(); |
1906 | 1888 |
1907 FlushPendingProtocolNotifications(); | 1889 FlushPendingProtocolNotifications(); |
1908 | 1890 |
1909 return css_style_sheet_to_inspector_style_sheet_.at(&inspector_sheet); | 1891 return css_style_sheet_to_inspector_style_sheet_.at(&inspector_sheet); |
1910 } | 1892 } |
1911 | 1893 |
1912 Response InspectorCSSAgent::AssertEnabled() { | |
1913 return was_enabled_ ? Response::OK() | |
1914 : Response::Error("CSS agent was not enabled"); | |
1915 } | |
1916 | |
1917 Response InspectorCSSAgent::AssertInspectorStyleSheetForId( | 1894 Response InspectorCSSAgent::AssertInspectorStyleSheetForId( |
1918 const String& style_sheet_id, | 1895 const String& style_sheet_id, |
1919 InspectorStyleSheet*& result) { | 1896 InspectorStyleSheet*& result) { |
1920 Response response = AssertEnabled(); | |
1921 if (!response.isSuccess()) | |
1922 return response; | |
1923 IdToInspectorStyleSheet::iterator it = | 1897 IdToInspectorStyleSheet::iterator it = |
1924 id_to_inspector_style_sheet_.find(style_sheet_id); | 1898 id_to_inspector_style_sheet_.find(style_sheet_id); |
1925 if (it == id_to_inspector_style_sheet_.end()) | 1899 if (it == id_to_inspector_style_sheet_.end()) |
1926 return Response::Error("No style sheet with given id found"); | 1900 return Response::Error("No style sheet with given id found"); |
1927 result = it->value.Get(); | 1901 result = it->value.Get(); |
1928 return Response::OK(); | 1902 return Response::OK(); |
1929 } | 1903 } |
1930 | 1904 |
1931 Response InspectorCSSAgent::AssertStyleSheetForId( | 1905 Response InspectorCSSAgent::AssertStyleSheetForId( |
1932 const String& style_sheet_id, | 1906 const String& style_sheet_id, |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2562 visitor->Trace(css_style_sheet_to_inspector_style_sheet_); | 2536 visitor->Trace(css_style_sheet_to_inspector_style_sheet_); |
2563 visitor->Trace(document_to_css_style_sheets_); | 2537 visitor->Trace(document_to_css_style_sheets_); |
2564 visitor->Trace(invalidated_documents_); | 2538 visitor->Trace(invalidated_documents_); |
2565 visitor->Trace(node_to_inspector_style_sheet_); | 2539 visitor->Trace(node_to_inspector_style_sheet_); |
2566 visitor->Trace(inspector_user_agent_style_sheet_); | 2540 visitor->Trace(inspector_user_agent_style_sheet_); |
2567 visitor->Trace(tracker_); | 2541 visitor->Trace(tracker_); |
2568 InspectorBaseAgent::Trace(visitor); | 2542 InspectorBaseAgent::Trace(visitor); |
2569 } | 2543 } |
2570 | 2544 |
2571 } // namespace blink | 2545 } // namespace blink |
OLD | NEW |