summaryrefslogtreecommitdiffstats
path: root/content/shell
diff options
context:
space:
mode:
authorzeeshanq@chromium.org <zeeshanq@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-16 19:59:41 +0000
committerzeeshanq@chromium.org <zeeshanq@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-16 19:59:41 +0000
commitbfb6a608b37d0ffcf1443f46a7564d74937ba003 (patch)
tree9b1a612b6696296794f4341f8476746b4d85e1b2 /content/shell
parent9364ec2ba62b326575023fdd535d8af73dbc695c (diff)
downloadchromium_src-bfb6a608b37d0ffcf1443f46a7564d74937ba003.zip
chromium_src-bfb6a608b37d0ffcf1443f46a7564d74937ba003.tar.gz
chromium_src-bfb6a608b37d0ffcf1443f46a7564d74937ba003.tar.bz2
Validate TouchPoint in EventSender.
There was noise created in ClusterFuzz by tests crashing on invalid input to EventSender, this should address it. BUG=346339 Review URL: https://codereview.chromium.org/237853003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@264288 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/shell')
-rw-r--r--content/shell/renderer/test_runner/event_sender.cc21
-rw-r--r--content/shell/renderer/test_runner/event_sender.h1
2 files changed, 19 insertions, 3 deletions
diff --git a/content/shell/renderer/test_runner/event_sender.cc b/content/shell/renderer/test_runner/event_sender.cc
index d4cdd5d..1c1eeed 100644
--- a/content/shell/renderer/test_runner/event_sender.cc
+++ b/content/shell/renderer/test_runner/event_sender.cc
@@ -1390,15 +1390,27 @@ void EventSender::ClearTouchPoints() {
touch_points_.clear();
}
+void EventSender::ThrowTouchPointError() {
+ v8::Isolate* isolate = blink::mainThreadIsolate();
+ isolate->ThrowException(v8::Exception::TypeError(
+ gin::StringToV8(isolate, "Invalid touch point.")));
+}
+
void EventSender::ReleaseTouchPoint(unsigned index) {
- DCHECK_LT(index, touch_points_.size());
+ if (index >= touch_points_.size()) {
+ ThrowTouchPointError();
+ return;
+ }
WebTouchPoint* touch_point = &touch_points_[index];
touch_point->state = WebTouchPoint::StateReleased;
}
void EventSender::UpdateTouchPoint(unsigned index, int x, int y) {
- DCHECK_LT(index, touch_points_.size());
+ if (index >= touch_points_.size()) {
+ ThrowTouchPointError();
+ return;
+ }
WebTouchPoint* touch_point = &touch_points_[index];
touch_point->state = WebTouchPoint::StateMoved;
@@ -1407,7 +1419,10 @@ void EventSender::UpdateTouchPoint(unsigned index, int x, int y) {
}
void EventSender::CancelTouchPoint(unsigned index) {
- DCHECK_LT(index, touch_points_.size());
+ if (index >= touch_points_.size()) {
+ ThrowTouchPointError();
+ return;
+ }
WebTouchPoint* touch_point = &touch_points_[index];
touch_point->state = WebTouchPoint::StateCancelled;
diff --git a/content/shell/renderer/test_runner/event_sender.h b/content/shell/renderer/test_runner/event_sender.h
index e1423a5..56444d2 100644
--- a/content/shell/renderer/test_runner/event_sender.h
+++ b/content/shell/renderer/test_runner/event_sender.h
@@ -107,6 +107,7 @@ class EventSender : public base::SupportsWeakPtr<EventSender> {
void UpdateTouchPoint(unsigned index, int x, int y);
void CancelTouchPoint(unsigned index);
void SetTouchModifier(const std::string& key_name, bool set_mask);
+ void ThrowTouchPointError();
void DumpFilenameBeingDragged();