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

Unified Diff: content/browser/devtools/renderer_overrides_handler.cc

Issue 474213002: DevTools: control touch emulation from the browser side only. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebaselined 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/devtools/renderer_overrides_handler.cc
diff --git a/content/browser/devtools/renderer_overrides_handler.cc b/content/browser/devtools/renderer_overrides_handler.cc
index b068a85f084a5cde0500aae2c2fc74aef4238658..39e726c31af755800545e17dded272efe82ea29b 100644
--- a/content/browser/devtools/renderer_overrides_handler.cc
+++ b/content/browser/devtools/renderer_overrides_handler.cc
@@ -22,6 +22,7 @@
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_base.h"
+#include "content/browser/web_contents/web_contents_impl.h"
#include "content/common/view_messages.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/content_browser_client.h"
@@ -70,6 +71,7 @@ static int kCaptureRetryLimit = 2;
RendererOverridesHandler::RendererOverridesHandler()
: has_last_compositor_frame_metadata_(false),
capture_retry_count_(0),
+ touch_emulation_enabled_(false),
weak_factory_(this) {
RegisterCommandHandler(
devtools::DOM::setFileInputFiles::kName,
@@ -121,6 +123,11 @@ RendererOverridesHandler::RendererOverridesHandler()
&RendererOverridesHandler::PageCaptureScreenshot,
base::Unretained(this)));
RegisterCommandHandler(
+ devtools::Page::setTouchEmulationEnabled::kName,
+ base::Bind(
+ &RendererOverridesHandler::PageSetTouchEmulationEnabled,
+ base::Unretained(this)));
+ RegisterCommandHandler(
devtools::Page::canScreencast::kName,
base::Bind(
&RendererOverridesHandler::PageCanScreencast,
@@ -150,8 +157,8 @@ RendererOverridesHandler::RendererOverridesHandler()
RendererOverridesHandler::~RendererOverridesHandler() {}
void RendererOverridesHandler::OnClientDetached() {
- if (screencast_command_ && host_)
- host_->SetTouchEventEmulationEnabled(false, false);
+ if (touch_emulation_enabled_)
+ SetTouchEventEmulationEnabled(false);
screencast_command_ = NULL;
}
@@ -173,18 +180,14 @@ void RendererOverridesHandler::OnVisibilityChanged(bool visible) {
void RendererOverridesHandler::SetRenderViewHost(
RenderViewHostImpl* host) {
host_ = host;
- if (screencast_command_ && host)
- host->SetTouchEventEmulationEnabled(true, true);
+ if (touch_emulation_enabled_)
+ SetTouchEventEmulationEnabled(true);
}
void RendererOverridesHandler::ClearRenderViewHost() {
host_ = NULL;
}
-bool RendererOverridesHandler::OnSetTouchEventEmulationEnabled() {
- return screencast_command_.get() != NULL;
-}
-
void RendererOverridesHandler::InnerSwapCompositorFrame() {
if ((base::TimeTicks::Now() - last_frame_time_).InMilliseconds() <
kFrameRateThresholdMs) {
@@ -308,9 +311,7 @@ RendererOverridesHandler::ClearBrowserCookies(
scoped_refptr<DevToolsProtocol::Response>
RendererOverridesHandler::PageDisable(
scoped_refptr<DevToolsProtocol::Command> command) {
- if (screencast_command_ && host_)
- host_->SetTouchEventEmulationEnabled(false, false);
- screencast_command_ = NULL;
+ OnClientDetached();
return NULL;
}
@@ -488,6 +489,24 @@ void RendererOverridesHandler::ScreenshotCaptured(
}
scoped_refptr<DevToolsProtocol::Response>
+RendererOverridesHandler::PageSetTouchEmulationEnabled(
+ scoped_refptr<DevToolsProtocol::Command> command) {
+ base::DictionaryValue* params = command->params();
+ bool enabled;
+ if (!params || !params->GetBoolean(
+ devtools::Page::setTouchEmulationEnabled::kParamEnabled,
+ &enabled)) {
+ // Pass to renderer.
+ return NULL;
+ }
+
+ if (touch_emulation_enabled_ != enabled)
+ SetTouchEventEmulationEnabled(enabled);
+ // Pass to renderer.
+ return NULL;
+}
+
+scoped_refptr<DevToolsProtocol::Response>
RendererOverridesHandler::PageCanScreencast(
scoped_refptr<DevToolsProtocol::Command> command) {
base::DictionaryValue* result = new base::DictionaryValue();
@@ -505,7 +524,7 @@ RendererOverridesHandler::PageStartScreencast(
screencast_command_ = command;
if (!host_)
return command->InternalErrorResponse("Could not connect to view");
- host_->SetTouchEventEmulationEnabled(true, true);
+ SetTouchEventEmulationEnabled(true);
bool visible = !host_->is_hidden();
NotifyScreencastVisibility(visible);
if (visible) {
@@ -522,8 +541,7 @@ RendererOverridesHandler::PageStopScreencast(
scoped_refptr<DevToolsProtocol::Command> command) {
last_frame_time_ = base::TimeTicks();
screencast_command_ = NULL;
- if (host_)
- host_->SetTouchEventEmulationEnabled(false, false);
+ SetTouchEventEmulationEnabled(false);
return command->SuccessResponse(NULL);
}
@@ -978,4 +996,14 @@ RendererOverridesHandler::InputEmulateTouchFromMouseEvent(
return command->SuccessResponse(NULL);
}
+void RendererOverridesHandler::SetTouchEventEmulationEnabled(bool enabled) {
dgozman 2014/08/17 12:39:20 Calls from start/stopScreencast and setTouchEventE
pfeldman 2014/08/17 14:47:14 Could you remind me why we enable touch while scre
dgozman 2014/08/17 15:01:41 We use touch emulator to handle emulateTouchFromMo
+ touch_emulation_enabled_ = enabled;
+ if (!host_)
+ return;
+ host_->SetTouchEventEmulationEnabled(enabled);
+ WebContents* web_contents = WebContents::FromRenderViewHost(host_);
+ if (web_contents)
+ web_contents->SetForceDisableOverscrollContent(enabled);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698