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

Side by Side Diff: chrome/test/chromedriver/js/execute_async_script.js

Issue 12675002: [chromedriver] Implement command: executeAsyncScript and setScriptTimeout (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 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 /**
6 * Execute the given script and save its result.
kkania 2013/03/08 17:25:12 saves its asynchronous result
chrisgao (Use stgao instead) 2013/03/08 21:06:24 Done.
7 *
8 * A callback function {function(*) : null} will be appended to the end of
9 * <code>args</code>.
10 * The script should call this callback when it is completed. The value passed to
11 * this callback will be saved in window.chromedriverAsyncScriptResult. Variable
kkania 2013/03/08 17:25:12 try not to include unnecessary implementation deta
chrisgao (Use stgao instead) 2013/03/08 21:06:24 Done.
12 * window.chromedriverAsyncScriptFinsished indicates whether the script
13 * is completed.
14 *
15 * If script1 is executed before script2, but script1 completes after script2,
16 * then script1's result will be discarded while script2's will be saved.
17 *
18 * @param {!string} script The asynchronous script to be executed.
19 * @param {Array.<*>} args Arguments to be passed to the script.
20 */
21 function executeAsyncScript(script, args) {
22 var idName = 'chromedriverAsyncScriptId';
kkania 2013/03/08 17:25:12 how about: function getAsyncScriptInfo() { var
chrisgao (Use stgao instead) 2013/03/08 21:06:24 Done.
23 var finishFlagName = 'chromedriverAsyncScriptFinsished';
kkania 2013/03/08 17:25:12 i think technically you don't need the finish flag
chrisgao (Use stgao instead) 2013/03/08 21:06:24 ok.
24 var resultName = 'chromedriverAsyncScriptResult';
25 if (!(idName in document))
26 document[idName] = 0;
27 document[idName] ++;
kkania 2013/03/08 17:25:12 style says no space i thnik
chrisgao (Use stgao instead) 2013/03/08 21:06:24 Done.
28 document[resultName] = null;
kkania 2013/03/08 17:25:12 what's the point of this?
chrisgao (Use stgao instead) 2013/03/08 21:06:24 If last script timeout, its result might still be
29 document[finishFlagName] = false;
30 var id = document[idName];
31
32 function callback(result) {
33 if (id == document[idName]) {
kkania 2013/03/08 17:25:12 i can think of two improvements here: 1) if the us
chrisgao (Use stgao instead) 2013/03/08 21:06:24 1) Raise Timeout error below if this case happens.
34 document[resultName] = result;
35 document[finishFlagName] = true;
36 }
37 }
38 args.push(callback);
39
40 new window['Function'](script).apply(null, args);
kkania 2013/03/08 17:25:12 I don't think you need the window. new Function(
chrisgao (Use stgao instead) 2013/03/08 21:06:24 Done. Also set error code here.
41 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698