diff options
author | zeeshanq@chromium.org <zeeshanq@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-16 19:59:41 +0000 |
---|---|---|
committer | zeeshanq@chromium.org <zeeshanq@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-16 19:59:41 +0000 |
commit | bfb6a608b37d0ffcf1443f46a7564d74937ba003 (patch) | |
tree | 9b1a612b6696296794f4341f8476746b4d85e1b2 /content/shell | |
parent | 9364ec2ba62b326575023fdd535d8af73dbc695c (diff) | |
download | chromium_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.cc | 21 | ||||
-rw-r--r-- | content/shell/renderer/test_runner/event_sender.h | 1 |
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(); |