Commit 5b4d90ce authored by Dmitry Gozman's avatar Dmitry Gozman Committed by Commit Bot

[DevTools] Expose Emulation.setDocumentCookieDisabled command

It disables document.cookie APIs.

Bug: none
Change-Id: I76d4240fbd5f5cfdd2f2fa7d147eafbf939e2982
Reviewed-on: https://chromium-review.googlesource.com/1080984Reviewed-by: default avatarPavel Feldman <pfeldman@chromium.org>
Commit-Queue: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#564720}
parent 767d3747
Tests Emulation.setDocumentCookieDisabled.
Setting cookie to 'foo'
Reading cookie:
(async function(testRunner) {
var {page, session, dp} = await testRunner.startBlank('Tests Emulation.setDocumentCookieDisabled.');
await dp.Emulation.setDocumentCookieDisabled({ disabled: true });
const cookie = 'foo';
testRunner.log(`Setting cookie to '${cookie}'`);
await session.evaluate(`document.cookie = '${cookie}'`);
testRunner.log(`Reading cookie: ${await session.evaluate(`'' + document.cookie`)}`);
testRunner.completeTest();
})
...@@ -663,7 +663,7 @@ void WebSettingsImpl::SetSyncXHRInDocumentsEnabled(bool enabled) { ...@@ -663,7 +663,7 @@ void WebSettingsImpl::SetSyncXHRInDocumentsEnabled(bool enabled) {
} }
void WebSettingsImpl::SetCookieEnabled(bool enabled) { void WebSettingsImpl::SetCookieEnabled(bool enabled) {
settings_->SetCookieEnabled(enabled); dev_tools_emulator_->SetCookieEnabled(enabled);
} }
void WebSettingsImpl::SetNavigateOnDragDrop(bool enabled) { void WebSettingsImpl::SetNavigateOnDragDrop(bool enabled) {
......
...@@ -2326,6 +2326,11 @@ domain Emulation ...@@ -2326,6 +2326,11 @@ domain Emulation
# Whether scrollbars should be always hidden. # Whether scrollbars should be always hidden.
boolean hidden boolean hidden
experimental command setDocumentCookieDisabled
parameters
# Whether document.coookie API should be disabled.
boolean disabled
experimental command setEmitTouchEventsForMouse experimental command setEmitTouchEventsForMouse
parameters parameters
# Whether touch emulation based on mouse input should be enabled. # Whether touch emulation based on mouse input should be enabled.
......
...@@ -103,7 +103,10 @@ DevToolsEmulator::DevToolsEmulator(WebViewImpl* web_view) ...@@ -103,7 +103,10 @@ DevToolsEmulator::DevToolsEmulator(WebViewImpl* web_view)
script_execution_disabled_(false), script_execution_disabled_(false),
embedder_hide_scrollbars_( embedder_hide_scrollbars_(
web_view->GetPage()->GetSettings().GetHideScrollbars()), web_view->GetPage()->GetSettings().GetHideScrollbars()),
scrollbars_hidden_(false) {} scrollbars_hidden_(false),
embedder_cookie_enabled_(
web_view->GetPage()->GetSettings().GetCookieEnabled()),
document_cookie_disabled_(false) {}
DevToolsEmulator::~DevToolsEmulator() = default; DevToolsEmulator::~DevToolsEmulator() = default;
...@@ -172,6 +175,12 @@ void DevToolsEmulator::SetHideScrollbars(bool hide) { ...@@ -172,6 +175,12 @@ void DevToolsEmulator::SetHideScrollbars(bool hide) {
web_view_->GetPage()->GetSettings().SetHideScrollbars(hide); web_view_->GetPage()->GetSettings().SetHideScrollbars(hide);
} }
void DevToolsEmulator::SetCookieEnabled(bool enabled) {
embedder_cookie_enabled_ = enabled;
if (!document_cookie_disabled_)
web_view_->GetPage()->GetSettings().SetCookieEnabled(enabled);
}
void DevToolsEmulator::SetDoubleTapToZoomEnabled(bool enabled) { void DevToolsEmulator::SetDoubleTapToZoomEnabled(bool enabled) {
double_tap_to_zoom_enabled_ = enabled; double_tap_to_zoom_enabled_ = enabled;
} }
...@@ -518,4 +527,12 @@ void DevToolsEmulator::SetScrollbarsHidden(bool hidden) { ...@@ -518,4 +527,12 @@ void DevToolsEmulator::SetScrollbarsHidden(bool hidden) {
scrollbars_hidden_ ? true : embedder_hide_scrollbars_); scrollbars_hidden_ ? true : embedder_hide_scrollbars_);
} }
void DevToolsEmulator::SetDocumentCookieDisabled(bool disabled) {
if (document_cookie_disabled_ == disabled)
return;
document_cookie_disabled_ = disabled;
web_view_->GetPage()->GetSettings().SetCookieEnabled(
document_cookie_disabled_ ? false : embedder_cookie_enabled_);
}
} // namespace blink } // namespace blink
...@@ -36,6 +36,7 @@ class CORE_EXPORT DevToolsEmulator final ...@@ -36,6 +36,7 @@ class CORE_EXPORT DevToolsEmulator final
void SetPluginsEnabled(bool); void SetPluginsEnabled(bool);
void SetScriptEnabled(bool); void SetScriptEnabled(bool);
void SetHideScrollbars(bool); void SetHideScrollbars(bool);
void SetCookieEnabled(bool);
void SetDoubleTapToZoomEnabled(bool); void SetDoubleTapToZoomEnabled(bool);
bool DoubleTapToZoomEnabled() const; bool DoubleTapToZoomEnabled() const;
void SetAvailablePointerTypes(int); void SetAvailablePointerTypes(int);
...@@ -54,6 +55,7 @@ class CORE_EXPORT DevToolsEmulator final ...@@ -54,6 +55,7 @@ class CORE_EXPORT DevToolsEmulator final
void SetTouchEventEmulationEnabled(bool, int max_touch_points); void SetTouchEventEmulationEnabled(bool, int max_touch_points);
void SetScriptExecutionDisabled(bool); void SetScriptExecutionDisabled(bool);
void SetScrollbarsHidden(bool); void SetScrollbarsHidden(bool);
void SetDocumentCookieDisabled(bool);
// Notify the DevToolsEmulator about a scroll or scale change of the main // Notify the DevToolsEmulator about a scroll or scale change of the main
// frame. Updates the transform for a viewport override. // frame. Updates the transform for a viewport override.
...@@ -117,6 +119,9 @@ class CORE_EXPORT DevToolsEmulator final ...@@ -117,6 +119,9 @@ class CORE_EXPORT DevToolsEmulator final
bool embedder_hide_scrollbars_; bool embedder_hide_scrollbars_;
bool scrollbars_hidden_; bool scrollbars_hidden_;
bool embedder_cookie_enabled_;
bool document_cookie_disabled_;
}; };
} // namespace blink } // namespace blink
......
...@@ -30,6 +30,7 @@ using protocol::Response; ...@@ -30,6 +30,7 @@ using protocol::Response;
namespace EmulationAgentState { namespace EmulationAgentState {
static const char kScriptExecutionDisabled[] = "scriptExecutionDisabled"; static const char kScriptExecutionDisabled[] = "scriptExecutionDisabled";
static const char kScrollbarsHidden[] = "scrollbarsHidden"; static const char kScrollbarsHidden[] = "scrollbarsHidden";
static const char kDocumentCookieDisabled[] = "documentCookieDisabled";
static const char kTouchEventEmulationEnabled[] = "touchEventEmulationEnabled"; static const char kTouchEventEmulationEnabled[] = "touchEventEmulationEnabled";
static const char kMaxTouchPoints[] = "maxTouchPoints"; static const char kMaxTouchPoints[] = "maxTouchPoints";
static const char kEmulatedMedia[] = "emulatedMedia"; static const char kEmulatedMedia[] = "emulatedMedia";
...@@ -79,6 +80,10 @@ void InspectorEmulationAgent::Restore() { ...@@ -79,6 +80,10 @@ void InspectorEmulationAgent::Restore() {
} }
if (state_->booleanProperty(EmulationAgentState::kScrollbarsHidden, false)) if (state_->booleanProperty(EmulationAgentState::kScrollbarsHidden, false))
GetWebViewImpl()->GetDevToolsEmulator()->SetScrollbarsHidden(true); GetWebViewImpl()->GetDevToolsEmulator()->SetScrollbarsHidden(true);
if (state_->booleanProperty(EmulationAgentState::kDocumentCookieDisabled,
false)) {
GetWebViewImpl()->GetDevToolsEmulator()->SetDocumentCookieDisabled(true);
}
setTouchEmulationEnabled( setTouchEmulationEnabled(
state_->booleanProperty(EmulationAgentState::kTouchEventEmulationEnabled, state_->booleanProperty(EmulationAgentState::kTouchEventEmulationEnabled,
false), false),
...@@ -158,6 +163,7 @@ Response InspectorEmulationAgent::disable() { ...@@ -158,6 +163,7 @@ Response InspectorEmulationAgent::disable() {
instrumenting_agents_->removeInspectorEmulationAgent(this); instrumenting_agents_->removeInspectorEmulationAgent(this);
setScriptExecutionDisabled(false); setScriptExecutionDisabled(false);
setScrollbarsHidden(false); setScrollbarsHidden(false);
setDocumentCookieDisabled(false);
setTouchEmulationEnabled(false, Maybe<int>()); setTouchEmulationEnabled(false, Maybe<int>());
setEmulatedMedia(String()); setEmulatedMedia(String());
setCPUThrottlingRate(1); setCPUThrottlingRate(1);
...@@ -214,6 +220,19 @@ Response InspectorEmulationAgent::setScrollbarsHidden(bool hidden) { ...@@ -214,6 +220,19 @@ Response InspectorEmulationAgent::setScrollbarsHidden(bool hidden) {
return response; return response;
} }
Response InspectorEmulationAgent::setDocumentCookieDisabled(bool disabled) {
Response response = AssertPage();
if (!response.isSuccess())
return response;
if (state_->booleanProperty(EmulationAgentState::kDocumentCookieDisabled,
false) == disabled) {
return response;
}
state_->setBoolean(EmulationAgentState::kDocumentCookieDisabled, disabled);
GetWebViewImpl()->GetDevToolsEmulator()->SetDocumentCookieDisabled(disabled);
return response;
}
Response InspectorEmulationAgent::setTouchEmulationEnabled( Response InspectorEmulationAgent::setTouchEmulationEnabled(
bool enabled, bool enabled,
protocol::Maybe<int> max_touch_points) { protocol::Maybe<int> max_touch_points) {
......
...@@ -43,6 +43,7 @@ class CORE_EXPORT InspectorEmulationAgent final ...@@ -43,6 +43,7 @@ class CORE_EXPORT InspectorEmulationAgent final
protocol::Response setPageScaleFactor(double) override; protocol::Response setPageScaleFactor(double) override;
protocol::Response setScriptExecutionDisabled(bool value) override; protocol::Response setScriptExecutionDisabled(bool value) override;
protocol::Response setScrollbarsHidden(bool hidden) override; protocol::Response setScrollbarsHidden(bool hidden) override;
protocol::Response setDocumentCookieDisabled(bool disabled) override;
protocol::Response setTouchEmulationEnabled( protocol::Response setTouchEmulationEnabled(
bool enabled, bool enabled,
protocol::Maybe<int> max_touch_points) override; protocol::Maybe<int> max_touch_points) override;
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
"domain": "Emulation", "domain": "Emulation",
"include": ["forceViewport", "resetViewport", "resetPageScaleFactor", "setPageScaleFactor", "setScriptExecutionDisabled", "setTouchEmulationEnabled", "include": ["forceViewport", "resetViewport", "resetPageScaleFactor", "setPageScaleFactor", "setScriptExecutionDisabled", "setTouchEmulationEnabled",
"setEmulatedMedia", "setCPUThrottlingRate", "setVirtualTimePolicy", "setNavigatorOverrides", "setDefaultBackgroundColorOverride", "setDeviceMetricsOverride", "clearDeviceMetricsOverride", "setEmulatedMedia", "setCPUThrottlingRate", "setVirtualTimePolicy", "setNavigatorOverrides", "setDefaultBackgroundColorOverride", "setDeviceMetricsOverride", "clearDeviceMetricsOverride",
"setUserAgentOverride", "setScrollbarsHidden"], "setUserAgentOverride", "setScrollbarsHidden", "setDocumentCookieDisabled"],
"include_events": ["virtualTimeBudgetExpired", "virtualTimeAdvanced", "virtualTimePaused"] "include_events": ["virtualTimeBudgetExpired", "virtualTimeAdvanced", "virtualTimePaused"]
}, },
{ {
......
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