1// Copyright 2015 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5'use strict'; 6 7(function() { 8 function MouseClickAction(opt_callback) { 9 this.callback_ = opt_callback; 10 } 11 12 MouseClickAction.prototype.start = function(options) { 13 this.click_(options.element); 14 }; 15 16 MouseClickAction.prototype.click_ = function(element) { 17 var triggerMouseEvent = this.triggerMouseEvent_; 18 var callback = this.callback_; 19 triggerMouseEvent(element, 'mouseover'); 20 triggerMouseEvent(element, 'mousedown'); 21 // ~100ms is typical for a mouse click's elapsed time. 22 window.setTimeout( 23 function() { 24 triggerMouseEvent(element, 'mouseup'); 25 triggerMouseEvent(element, 'click', callback); 26 }, 100); 27 }; 28 29 MouseClickAction.prototype.triggerMouseEvent_ = function( 30 node, eventType, callback) { 31 var clickEvent = document.createEvent('MouseEvents'); 32 clickEvent.initEvent(eventType, true, true); 33 node.dispatchEvent(clickEvent); 34 if (callback) { 35 window.setTimeout(callback, 0); 36 } 37 }; 38 39 window.__MouseClickAction = MouseClickAction; 40})(); 41