Commit 21768375 authored by Alex Rudenko's avatar Alex Rudenko Committed by Commit Bot

Refactor InspectTool::Init/DoInit

This CL proposes refactoring Init/DoInit methods by moving the overlay
and frontend parameters to the constructor to avoid confusion about
at what time they are set on a tool. Also, it removes DoInit/Init methods
and moves the ScreenshotTool's init to the constructor as well.

Change-Id: I246c1383c66f6977c0b69fd82938a6c7baa192e3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2428926Reviewed-by: default avatarSigurd Schneider <sigurds@chromium.org>
Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Commit-Queue: Alex Rudenko <alexrudenko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#812677}
parent 47b9e775
......@@ -102,10 +102,14 @@ Node* HoveredNodeForEvent(LocalFrame* frame,
// SearchingForNodeTool --------------------------------------------------------
SearchingForNodeTool::SearchingForNodeTool(InspectorDOMAgent* dom_agent,
SearchingForNodeTool::SearchingForNodeTool(InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
InspectorDOMAgent* dom_agent,
bool ua_shadow,
const std::vector<uint8_t>& config)
: dom_agent_(dom_agent), ua_shadow_(ua_shadow) {
: InspectTool(overlay, frontend),
dom_agent_(dom_agent),
ua_shadow_(ua_shadow) {
auto parsed_config = protocol::Overlay::HighlightConfig::FromBinary(
config.data(), config.size());
if (parsed_config) {
......@@ -131,7 +135,6 @@ void SearchingForNodeTool::Draw(float scale) {
!omit_tooltip_ && highlight_config_->show_info &&
node->GetLayoutObject() &&
node->GetDocument().GetFrame();
DCHECK(overlay_);
overlay_->EnsureAXContext(node);
InspectorHighlight highlight(node, *highlight_config_, contrast_info_,
append_element_info, false, is_locked_ancestor_);
......@@ -262,10 +265,15 @@ void SearchingForNodeTool::NodeHighlightRequested(Node* node) {
// QuadHighlightTool -----------------------------------------------------------
QuadHighlightTool::QuadHighlightTool(std::unique_ptr<FloatQuad> quad,
QuadHighlightTool::QuadHighlightTool(InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
std::unique_ptr<FloatQuad> quad,
Color color,
Color outline_color)
: quad_(std::move(quad)), color_(color), outline_color_(outline_color) {}
: InspectTool(overlay, frontend),
quad_(std::move(quad)),
color_(color),
outline_color_(outline_color) {}
bool QuadHighlightTool::ForwardEventsToOverlay() {
return false;
......@@ -284,10 +292,13 @@ void QuadHighlightTool::Draw(float scale) {
// NodeHighlightTool -----------------------------------------------------------
NodeHighlightTool::NodeHighlightTool(
InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
Member<Node> node,
String selector_list,
std::unique_ptr<InspectorHighlightConfig> highlight_config)
: selector_list_(selector_list),
: InspectTool(overlay, frontend),
selector_list_(selector_list),
highlight_config_(std::move(highlight_config)) {
if (Node* locked_ancestor =
DisplayLockUtilities::HighestLockedExclusiveAncestor(*node)) {
......@@ -339,7 +350,6 @@ void NodeHighlightTool::DrawMatchingSelector() {
if (!query_base)
query_base = node_->ownerDocument();
DCHECK(overlay_);
overlay_->EnsureAXContext(query_base);
StaticElementList* elements = query_base->QuerySelectorAll(
......@@ -369,7 +379,6 @@ std::unique_ptr<protocol::DictionaryValue>
NodeHighlightTool::GetNodeInspectorHighlightAsJson(
bool append_element_info,
bool append_distance_info) const {
DCHECK(overlay_);
overlay_->EnsureAXContext(node_.Get());
InspectorHighlight highlight(node_.Get(), *highlight_config_, contrast_info_,
append_element_info, append_distance_info,
......@@ -434,9 +443,12 @@ GridHighlightTool::GetGridInspectorHighlightsAsJson() const {
// SourceOrderTool -----------------------------------------------------------
SourceOrderTool::SourceOrderTool(
InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
Node* node,
std::unique_ptr<InspectorSourceOrderConfig> source_order_config)
: source_order_config_(std::move(source_order_config)) {
: InspectTool(overlay, frontend),
source_order_config_(std::move(source_order_config)) {
if (Node* locked_ancestor =
DisplayLockUtilities::HighestLockedExclusiveAncestor(*node)) {
node_ = locked_ancestor;
......@@ -559,7 +571,6 @@ void NearbyDistanceTool::Draw(float scale) {
Node* node = hovered_node_.Get();
if (!node)
return;
DCHECK(overlay_);
overlay_->EnsureAXContext(node);
InspectorHighlight highlight(
node, InspectorHighlight::DefaultConfig(),
......@@ -589,7 +600,9 @@ bool ShowViewSizeTool::ForwardEventsToOverlay() {
// ScreenshotTool --------------------------------------------------------------
void ScreenshotTool::DoInit() {
ScreenshotTool::ScreenshotTool(InspectorOverlayAgent* overlay,
OverlayFrontend* frontend)
: InspectTool(overlay, frontend) {
auto& client = overlay_->GetFrame()->GetPage()->GetChromeClient();
client.SetCursorOverridden(false);
client.SetCursor(CrossCursor(), overlay_->GetFrame());
......
......@@ -19,7 +19,9 @@ class WebPointerEvent;
class SearchingForNodeTool : public InspectTool {
public:
SearchingForNodeTool(InspectorDOMAgent* dom_agent,
SearchingForNodeTool(InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
InspectorDOMAgent* dom_agent,
bool ua_shadow,
const std::vector<uint8_t>& highlight_config);
......@@ -52,7 +54,9 @@ class SearchingForNodeTool : public InspectTool {
class QuadHighlightTool : public InspectTool {
public:
QuadHighlightTool(std::unique_ptr<FloatQuad> quad,
QuadHighlightTool(InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
std::unique_ptr<FloatQuad> quad,
Color color,
Color outline_color);
......@@ -70,7 +74,9 @@ class QuadHighlightTool : public InspectTool {
class NodeHighlightTool : public InspectTool {
public:
NodeHighlightTool(Member<Node> node,
NodeHighlightTool(InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
Member<Node> node,
String selector_list,
std::unique_ptr<InspectorHighlightConfig> highlight_config);
......@@ -101,6 +107,8 @@ class NodeHighlightTool : public InspectTool {
class SourceOrderTool : public InspectTool {
public:
SourceOrderTool(
InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
Node* node,
std::unique_ptr<InspectorSourceOrderConfig> source_order_config);
std::unique_ptr<protocol::DictionaryValue>
......@@ -123,8 +131,9 @@ class SourceOrderTool : public InspectTool {
// -----------------------------------------------------------------------------
class GridHighlightTool : public InspectTool {
using InspectTool::InspectTool;
public:
GridHighlightTool() = default;
void Draw(float scale) override;
void AddGridConfig(
Node* node,
......@@ -147,8 +156,7 @@ class GridHighlightTool : public InspectTool {
// -----------------------------------------------------------------------------
class NearbyDistanceTool : public InspectTool {
public:
NearbyDistanceTool() = default;
using InspectTool::InspectTool;
private:
int GetDataResourceId() override;
......@@ -166,8 +174,7 @@ class NearbyDistanceTool : public InspectTool {
// -----------------------------------------------------------------------------
class ShowViewSizeTool : public InspectTool {
public:
ShowViewSizeTool() = default;
using InspectTool::InspectTool;
private:
bool ForwardEventsToOverlay() override;
......@@ -180,11 +187,10 @@ class ShowViewSizeTool : public InspectTool {
class ScreenshotTool : public InspectTool {
public:
ScreenshotTool() = default;
ScreenshotTool(InspectorOverlayAgent* overlay, OverlayFrontend* frontend);
private:
int GetDataResourceId() override;
void DoInit() override;
void Dispatch(const String& message) override;
DISALLOW_COPY_AND_ASSIGN(ScreenshotTool);
......@@ -194,9 +200,13 @@ class ScreenshotTool : public InspectTool {
class PausedInDebuggerTool : public InspectTool {
public:
PausedInDebuggerTool(v8_inspector::V8InspectorSession* v8_session,
PausedInDebuggerTool(InspectorOverlayAgent* overlay,
OverlayFrontend* frontend,
v8_inspector::V8InspectorSession* v8_session,
const String& message)
: v8_session_(v8_session), message_(message) {}
: InspectTool(overlay, frontend),
v8_session_(v8_session),
message_(message) {}
private:
int GetDataResourceId() override;
......
......@@ -111,13 +111,6 @@ bool ParseQuad(std::unique_ptr<protocol::Array<double>> quad_array,
// InspectTool -----------------------------------------------------------------
void InspectTool::Init(InspectorOverlayAgent* overlay,
OverlayFrontend* frontend) {
overlay_ = overlay;
frontend_ = frontend;
DoInit();
}
int InspectTool::GetDataResourceId() {
return IDR_INSPECT_TOOL_HIGHLIGHT_JS;
}
......@@ -624,7 +617,8 @@ Response InspectorOverlayAgent::highlightRect(
std::unique_ptr<FloatQuad> quad =
std::make_unique<FloatQuad>(FloatRect(x, y, width, height));
SetInspectTool(MakeGarbageCollected<QuadHighlightTool>(
std::move(quad), InspectorDOMAgent::ParseColor(color.fromMaybe(nullptr)),
this, GetFrontend(), std::move(quad),
InspectorDOMAgent::ParseColor(color.fromMaybe(nullptr)),
InspectorDOMAgent::ParseColor(outline_color.fromMaybe(nullptr))));
return Response::Success();
}
......@@ -637,7 +631,8 @@ Response InspectorOverlayAgent::highlightQuad(
if (!ParseQuad(std::move(quad_array), quad.get()))
return Response::ServerError("Invalid Quad format");
SetInspectTool(MakeGarbageCollected<QuadHighlightTool>(
std::move(quad), InspectorDOMAgent::ParseColor(color.fromMaybe(nullptr)),
this, GetFrontend(), std::move(quad),
InspectorDOMAgent::ParseColor(color.fromMaybe(nullptr)),
InspectorDOMAgent::ParseColor(outline_color.fromMaybe(nullptr))));
return Response::Success();
}
......@@ -704,7 +699,8 @@ Response InspectorOverlayAgent::highlightNode(
return response;
SetInspectTool(MakeGarbageCollected<NodeHighlightTool>(
node, selector_list.fromMaybe(String()), std::move(highlight_config)));
this, GetFrontend(), node, selector_list.fromMaybe(String()),
std::move(highlight_config)));
return Response::Success();
}
......@@ -714,7 +710,8 @@ Response InspectorOverlayAgent::setShowGridOverlays(
persistent_tool_ = nullptr;
if (grid_node_highlight_configs->size()) {
GridHighlightTool* grid_tool = MakeGarbageCollected<GridHighlightTool>();
GridHighlightTool* grid_tool =
MakeGarbageCollected<GridHighlightTool>(this, GetFrontend());
for (std::unique_ptr<protocol::Overlay::GridNodeHighlightConfig>& config :
*grid_node_highlight_configs) {
Node* node = nullptr;
......@@ -725,7 +722,6 @@ Response InspectorOverlayAgent::setShowGridOverlays(
InspectorOverlayAgent::ToGridHighlightConfig(
config->getGridHighlightConfig()));
}
grid_tool->Init(this, GetFrontend());
persistent_tool_ = grid_tool;
}
......@@ -752,7 +748,7 @@ Response InspectorOverlayAgent::highlightSourceOrder(
std::make_unique<InspectorSourceOrderConfig>(config);
SetInspectTool(MakeGarbageCollected<SourceOrderTool>(
node, std::move(source_order_config)));
this, GetFrontend(), node, std::move(source_order_config)));
return Response::Success();
}
......@@ -775,7 +771,8 @@ Response InspectorOverlayAgent::highlightFrame(
InspectorDOMAgent::ParseColor(outline_color.fromMaybe(nullptr));
SetInspectTool(MakeGarbageCollected<NodeHighlightTool>(
frame->DeprecatedLocalOwner(), String(), std::move(highlight_config)));
this, GetFrontend(), frame->DeprecatedLocalOwner(), String(),
std::move(highlight_config)));
} else {
PickTheRightTool();
}
......@@ -815,8 +812,8 @@ Response InspectorOverlayAgent::getHighlightObjectForTest(
config->color_format = ColorFormat::HEX;
}
NodeHighlightTool tool(node, "" /* selector_list */, std::move(config));
tool.Init(this, GetFrontend());
NodeHighlightTool tool(this, GetFrontend(), node, "" /* selector_list */,
std::move(config));
*result = tool.GetNodeInspectorHighlightAsJson(
true /* append_element_info */, include_distance.fromMaybe(false));
return Response::Success();
......@@ -825,8 +822,7 @@ Response InspectorOverlayAgent::getHighlightObjectForTest(
Response InspectorOverlayAgent::getGridHighlightObjectsForTest(
std::unique_ptr<protocol::Array<int>> node_ids,
std::unique_ptr<protocol::DictionaryValue>* highlights) {
GridHighlightTool grid_highlight_tool;
grid_highlight_tool.Init(this, GetFrontend());
GridHighlightTool grid_highlight_tool(this, GetFrontend());
for (const int node_id : *node_ids) {
Node* node = nullptr;
Response response = dom_agent_->AssertNode(node_id, node);
......@@ -851,8 +847,7 @@ Response InspectorOverlayAgent::getSourceOrderHighlightObjectForTest(
auto config = std::make_unique<InspectorSourceOrderConfig>(
InspectorSourceOrderHighlight::DefaultConfig());
SourceOrderTool tool(node, std::move(config));
tool.Init(this, GetFrontend());
SourceOrderTool tool(this, GetFrontend(), node, std::move(config));
*result = tool.GetNodeInspectorSourceOrderHighlightAsJson();
return Response::Success();
}
......@@ -1230,7 +1225,7 @@ void InspectorOverlayAgent::OnResizeTimer(TimerBase*) {
}
// Show the resize tool.
SetInspectTool(MakeGarbageCollected<ShowViewSizeTool>());
SetInspectTool(MakeGarbageCollected<ShowViewSizeTool>(this, GetFrontend()));
resize_timer_active_ = true;
resize_timer_.Stop();
resize_timer_.StartOneShot(base::TimeDelta::FromSeconds(1), FROM_HERE);
......@@ -1322,19 +1317,20 @@ void InspectorOverlayAgent::PickTheRightTool() {
inspect_mode ==
protocol::Overlay::InspectModeEnum::SearchForUAShadowDOM) {
inspect_tool = MakeGarbageCollected<SearchingForNodeTool>(
dom_agent_,
this, GetFrontend(), dom_agent_,
inspect_mode ==
protocol::Overlay::InspectModeEnum::SearchForUAShadowDOM,
inspect_mode_protocol_config_.Get());
} else if (inspect_mode ==
protocol::Overlay::InspectModeEnum::CaptureAreaScreenshot) {
inspect_tool = MakeGarbageCollected<ScreenshotTool>();
inspect_tool = MakeGarbageCollected<ScreenshotTool>(this, GetFrontend());
} else if (inspect_mode ==
protocol::Overlay::InspectModeEnum::ShowDistances) {
inspect_tool = MakeGarbageCollected<NearbyDistanceTool>();
inspect_tool =
MakeGarbageCollected<NearbyDistanceTool>(this, GetFrontend());
} else if (!paused_in_debugger_message_.Get().IsNull()) {
inspect_tool = MakeGarbageCollected<PausedInDebuggerTool>(
v8_session_, paused_in_debugger_message_.Get());
this, GetFrontend(), v8_session_, paused_in_debugger_message_.Get());
} else if (persistent_tool_) {
inspect_tool = persistent_tool_;
}
......@@ -1375,7 +1371,6 @@ void InspectorOverlayAgent::SetInspectTool(InspectTool* inspect_tool) {
// tool will be included into the JS resource.
LoadFrameForTool(inspect_tool->GetDataResourceId());
EnsureEnableFrameOverlay();
inspect_tool->Init(this, GetFrontend());
} else {
inspect_tool_ = nullptr;
if (!hinge_)
......
......@@ -78,9 +78,10 @@ using OverlayFrontend = protocol::Overlay::Metainfo::FrontendClass;
class CORE_EXPORT InspectTool : public GarbageCollected<InspectTool> {
public:
InspectTool(InspectorOverlayAgent* overlay, OverlayFrontend* frontend)
: overlay_(overlay), frontend_(frontend) {}
virtual ~InspectTool() = default;
void Init(InspectorOverlayAgent* overlay, OverlayFrontend* frontend);
virtual int GetDataResourceId();
virtual bool HandleInputEvent(LocalFrameView* frame_view,
const WebInputEvent& input_event,
......@@ -103,8 +104,6 @@ class CORE_EXPORT InspectTool : public GarbageCollected<InspectTool> {
virtual bool HideOnMouseMove();
protected:
InspectTool() = default;
virtual void DoInit() {}
Member<InspectorOverlayAgent> overlay_;
OverlayFrontend* frontend_ = nullptr;
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment