diff options
Diffstat (limited to 'chromium/content/browser/devtools/protocol/page_handler.cc')
-rw-r--r-- | chromium/content/browser/devtools/protocol/page_handler.cc | 52 |
1 files changed, 20 insertions, 32 deletions
diff --git a/chromium/content/browser/devtools/protocol/page_handler.cc b/chromium/content/browser/devtools/protocol/page_handler.cc index 630de0dd016..f1aef415f19 100644 --- a/chromium/content/browser/devtools/protocol/page_handler.cc +++ b/chromium/content/browser/devtools/protocol/page_handler.cc @@ -14,6 +14,7 @@ #include "base/location.h" #include "base/memory/ref_counted.h" #include "base/memory/ref_counted_memory.h" +#include "base/numerics/safe_conversions.h" #include "base/process/process_handle.h" #include "base/single_thread_task_runner.h" #include "base/strings/string16.h" @@ -28,6 +29,7 @@ #include "content/browser/devtools/protocol/browser_handler.h" #include "content/browser/devtools/protocol/devtools_mhtml_helper.h" #include "content/browser/devtools/protocol/emulation_handler.h" +#include "content/browser/devtools/protocol/handler_helpers.h" #include "content/browser/frame_host/navigation_request.h" #include "content/browser/frame_host/navigator.h" #include "content/browser/manifest/manifest_manager_host.h" @@ -469,20 +471,10 @@ void PageHandler::Navigate(const std::string& url, else type = ui::PAGE_TRANSITION_TYPED; - FrameTreeNode* frame_tree_node = nullptr; std::string out_frame_id = frame_id.fromMaybe( host_->frame_tree_node()->devtools_frame_token().ToString()); - FrameTreeNode* root = host_->frame_tree_node(); - if (root->devtools_frame_token().ToString() == out_frame_id) { - frame_tree_node = root; - } else { - for (FrameTreeNode* node : root->frame_tree()->SubtreeNodes(root)) { - if (node->devtools_frame_token().ToString() == out_frame_id) { - frame_tree_node = node; - break; - } - } - } + FrameTreeNode* frame_tree_node = FrameTreeNodeFromDevToolsFrameToken( + host_->frame_tree_node(), out_frame_id); if (!frame_tree_node) { callback->sendFailure( @@ -703,7 +695,7 @@ void PageHandler::CaptureScreenshot( base::BindOnce(&PageHandler::ScreenshotCaptured, weak_factory_.GetWeakPtr(), std::move(callback), screenshot_format, screenshot_quality, gfx::Size(), - gfx::Size(), blink::WebDeviceEmulationParams()), + gfx::Size(), blink::DeviceEmulationParams()), false); return; } @@ -711,9 +703,9 @@ void PageHandler::CaptureScreenshot( // Welcome to the neural net of capturing screenshot while emulating device // metrics! bool emulation_enabled = emulation_handler_->device_emulation_enabled(); - blink::WebDeviceEmulationParams original_params = + blink::DeviceEmulationParams original_params = emulation_handler_->GetDeviceEmulationParams(); - blink::WebDeviceEmulationParams modified_params = original_params; + blink::DeviceEmulationParams modified_params = original_params; // Capture original view size if we know we are going to destroy it. We use // it in ScreenshotCaptured to restore. @@ -724,38 +716,34 @@ void PageHandler::CaptureScreenshot( gfx::Size emulated_view_size = modified_params.view_size; double dpfactor = 1; - ScreenInfo screen_info; - widget_host->GetScreenInfo(&screen_info); + float widget_host_device_scale_factor = widget_host->GetDeviceScaleFactor(); if (emulation_enabled) { // When emulating, emulate again and scale to make resulting image match // physical DP resolution. If view_size is not overriden, use actual view // size. float original_scale = original_params.scale > 0 ? original_params.scale : 1; - if (!modified_params.view_size.width) { + if (!modified_params.view_size.width()) { emulated_view_size.set_width( ceil(original_view_size.width() / original_scale)); } - if (!modified_params.view_size.height) { + if (!modified_params.view_size.height()) { emulated_view_size.set_height( ceil(original_view_size.height() / original_scale)); } dpfactor = modified_params.device_scale_factor ? modified_params.device_scale_factor / - screen_info.device_scale_factor + widget_host_device_scale_factor : 1; // When clip is specified, we scale viewport via clip, otherwise we use // scale. modified_params.scale = clip.isJust() ? 1 : dpfactor; - modified_params.view_size.width = emulated_view_size.width(); - modified_params.view_size.height = emulated_view_size.height(); + modified_params.view_size = emulated_view_size; } else if (clip.isJust()) { // When not emulating, still need to emulate the page size. - modified_params.view_size.width = original_view_size.width(); - modified_params.view_size.height = original_view_size.height(); - modified_params.screen_size.width = 0; - modified_params.screen_size.height = 0; + modified_params.view_size = original_view_size; + modified_params.screen_size = gfx::Size(); modified_params.device_scale_factor = 0; modified_params.scale = 1; } @@ -766,19 +754,19 @@ void PageHandler::CaptureScreenshot( clip.fromJust()->GetY()); modified_params.viewport_scale = clip.fromJust()->GetScale() * dpfactor; if (IsUseZoomForDSFEnabled()) { - modified_params.viewport_offset.Scale(screen_info.device_scale_factor); + modified_params.viewport_offset.Scale(widget_host_device_scale_factor); } } - // We use WebDeviceEmulationParams to either emulate, set viewport or both. + // We use DeviceEmulationParams to either emulate, set viewport or both. emulation_handler_->SetDeviceEmulationParams(modified_params); // Set view size for the screenshot right after emulating. if (clip.isJust()) { double scale = dpfactor * clip.fromJust()->GetScale(); widget_host->GetView()->SetSize( - gfx::Size(gfx::ToRoundedInt(clip.fromJust()->GetWidth() * scale), - gfx::ToRoundedInt(clip.fromJust()->GetHeight() * scale))); + gfx::Size(base::ClampRound(clip.fromJust()->GetWidth() * scale), + base::ClampRound(clip.fromJust()->GetHeight() * scale))); } else if (emulation_enabled) { widget_host->GetView()->SetSize( gfx::ScaleToFlooredSize(emulated_view_size, dpfactor)); @@ -792,7 +780,7 @@ void PageHandler::CaptureScreenshot( requested_image_size = emulated_view_size; } double scale = emulation_enabled ? original_params.device_scale_factor - : screen_info.device_scale_factor; + : widget_host_device_scale_factor; if (clip.isJust()) scale *= clip.fromJust()->GetScale(); requested_image_size = gfx::ScaleToRoundedSize(requested_image_size, scale); @@ -1094,7 +1082,7 @@ void PageHandler::ScreenshotCaptured( int quality, const gfx::Size& original_view_size, const gfx::Size& requested_image_size, - const blink::WebDeviceEmulationParams& original_emulation_params, + const blink::DeviceEmulationParams& original_emulation_params, const gfx::Image& image) { if (original_view_size.width()) { RenderWidgetHostImpl* widget_host = host_->GetRenderWidgetHost(); |