Changeset 268857 in webkit
- Timestamp:
- Oct 22, 2020, 2:36:08 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 24 edited
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/MiniBrowser/gtk/BrowserWindow.c (modified) (2 diffs)
-
WebDriverTests/ChangeLog (modified) (1 diff)
-
WebDriverTests/TestExpectations.json (modified) (2 diffs)
-
WebDriverTests/imported/w3c/importer.json (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/webdriver/webdriver/client.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/browsers/android_weblayer.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/browsers/chrome.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/browsers/chrome_android.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/environment.py (modified) (3 diffs)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/base.py (modified) (5 diffs)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py (modified) (3 diffs)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executorselenium.py (modified) (2 diffs)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executorservodriver.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executorwebdriver.py (modified) (3 diffs)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/protocol.py (modified) (3 diffs)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/testdriver-extra.js (modified) (6 diffs)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/testharnessreport.js (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/webdriver_server.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/wptrunner.py (modified) (2 diffs)
-
WebDriverTests/imported/w3c/webdriver/tests/element_click/shadow_dom.py (added)
-
WebDriverTests/imported/w3c/webdriver/tests/perform_actions/support/refine.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/webdriver/tests/print/printcmd.py (modified) (1 diff)
-
WebDriverTests/imported/w3c/webdriver/tests/print/user_prompts.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r268855 r268857 1 2020-10-22 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 Unreviewed. Update W3C WebDriver imported tests. 4 5 Always connect to WebKitWebView::close even if the view is never made active. 6 7 * MiniBrowser/gtk/BrowserWindow.c: 8 (browserWindowSwitchTab): 9 (browser_window_append_view): 10 1 11 2020-10-21 Carlos Alberto Lopez Perez <clopez@igalia.com> 2 12 -
trunk/Tools/MiniBrowser/gtk/BrowserWindow.c
r266055 r268857 1132 1132 g_signal_connect(webView, "notify::is-loading", G_CALLBACK(webViewIsLoadingChanged), window); 1133 1133 g_signal_connect(webView, "create", G_CALLBACK(webViewCreate), window); 1134 g_signal_connect(webView, "close", G_CALLBACK(webViewClose), window);1135 1134 g_signal_connect(webView, "load-failed", G_CALLBACK(webViewLoadFailed), window); 1136 1135 g_signal_connect(webView, "decide-policy", G_CALLBACK(webViewDecidePolicy), window); … … 1389 1388 } 1390 1389 1390 /* We always want close to be connected even for not active tabs */ 1391 g_signal_connect(webView, "close", G_CALLBACK(webViewClose), window); 1392 1391 1393 GtkWidget *tab = browser_tab_new(webView); 1392 1394 #if !GTK_CHECK_VERSION(3, 98, 0) -
trunk/WebDriverTests/ChangeLog
r268811 r268857 1 2020-10-22 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 Unreviewed. Update W3C WebDriver imported tests. 4 5 * TestExpectations.json: 6 * imported/w3c/importer.json: 7 * imported/w3c/tools/webdriver/webdriver/client.py: 8 * imported/w3c/tools/wptrunner/wptrunner/browsers/android_weblayer.py: 9 * imported/w3c/tools/wptrunner/wptrunner/browsers/chrome.py: 10 * imported/w3c/tools/wptrunner/wptrunner/browsers/chrome_android.py: 11 * imported/w3c/tools/wptrunner/wptrunner/environment.py: 12 * imported/w3c/tools/wptrunner/wptrunner/executors/base.py: 13 * imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py: 14 * imported/w3c/tools/wptrunner/wptrunner/executors/executorselenium.py: 15 * imported/w3c/tools/wptrunner/wptrunner/executors/executorservodriver.py: 16 * imported/w3c/tools/wptrunner/wptrunner/executors/executorwebdriver.py: 17 * imported/w3c/tools/wptrunner/wptrunner/executors/protocol.py: 18 * imported/w3c/tools/wptrunner/wptrunner/testdriver-extra.js: 19 * imported/w3c/tools/wptrunner/wptrunner/testharnessreport.js:¡ 20 * imported/w3c/tools/wptrunner/wptrunner/webdriver_server.py: 21 * imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py: 22 * imported/w3c/tools/wptrunner/wptrunner/wptrunner.py: 23 * imported/w3c/webdriver/tests/element_click/shadow_dom.py: Added. 24 * imported/w3c/webdriver/tests/perform_actions/support/refine.py: 25 * imported/w3c/webdriver/tests/print/printcmd.py: 26 * imported/w3c/webdriver/tests/print/user_prompts.py: 27 1 28 2020-10-21 Lauro Moura <lmoura@igalia.com> 2 29 -
trunk/WebDriverTests/TestExpectations.json
r268811 r268857 378 378 "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}} 379 379 }, 380 "test_special_key_sends_keydown[NULL-expected32]": {381 "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}382 },383 380 "test_special_key_sends_keydown[R_META-expected58]": { 384 381 "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}} … … 388 385 }, 389 386 "test_special_key_sends_keydown[PAUSE-expected45]": { 390 "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}}391 },392 "test_special_key_sends_keydown[CLEAR-expected4]": {393 387 "expected": {"all": {"status": ["FAIL"], "bug": "webkit.org/b/184967"}} 394 388 }, -
trunk/WebDriverTests/imported/w3c/importer.json
r267831 r268857 1 1 { 2 2 "repository": "https://github.com/w3c/web-platform-tests.git", 3 "revision": " 9da95c4ddd67ffc5010c1048250a7c67c0bee897",3 "revision": "b57da97fc05e5440ae675027dd45a26be48e2dbd", 4 4 "paths_to_import": [ 5 5 "tools/webdriver", -
trunk/WebDriverTests/imported/w3c/tools/webdriver/webdriver/client.py
r267831 r268857 582 582 583 583 @command 584 def new_window(self, type_hint= None):584 def new_window(self, type_hint="tab"): 585 585 body = {"type": type_hint} 586 586 value = self.send_session_command("POST", "window/new", body) -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/browsers/android_weblayer.py
r267831 r268857 48 48 **kwargs) 49 49 del executor_kwargs["capabilities"]["goog:chromeOptions"]["prefs"] 50 del executor_kwargs["capabilities"]["goog:chromeOptions"]["useAutomationExtension"]51 50 capabilities = executor_kwargs["capabilities"] 52 51 # Note that for WebLayer, we launch a test shell and have the test shell use -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/browsers/chrome.py
r267831 r268857 52 52 } 53 53 }, 54 "useAutomationExtension": False,55 54 "excludeSwitches": ["enable-automation"], 56 55 "w3c": True -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/browsers/chrome_android.py
r267831 r268857 50 50 # Remove unsupported options on mobile. 51 51 del executor_kwargs["capabilities"]["goog:chromeOptions"]["prefs"] 52 del executor_kwargs["capabilities"]["goog:chromeOptions"]["useAutomationExtension"]53 52 54 53 assert kwargs["package_name"], "missing --package-name" -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/environment.py
r267831 r268857 56 56 def __init__(self, test_paths, testharness_timeout_multipler, 57 57 pause_after_test, debug_info, options, ssl_config, env_extras, 58 enable_quic=False, serve_mojojs=False):58 enable_quic=False, mojojs_path=None): 59 59 self.test_paths = test_paths 60 60 self.server = None … … 73 73 self.ssl_config = ssl_config 74 74 self.enable_quic = enable_quic 75 self. serve_mojojs = serve_mojojs75 self.mojojs_path = mojojs_path 76 76 77 77 def __enter__(self): … … 218 218 del route_builder.mountpoint_routes["/"] 219 219 220 if self.serve_mojojs: 221 # TODO(Hexcles): Properly pass venv.path in. 222 route_builder.add_mount_point("/gen/", "_venv2/mojojs/gen") 220 if self.mojojs_path: 221 route_builder.add_mount_point("/gen/", self.mojojs_path) 223 222 224 223 return route_builder.get_routes() -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/base.py
r267831 r268857 692 692 pass 693 693 694 def window_handles(self): 695 return [] 696 694 697 695 698 class ConnectionlessProtocol(Protocol): … … 788 791 def process_action(self, url, payload): 789 792 action = payload["action"] 793 cmd_id = payload["id"] 790 794 self.logger.debug("Got action: %s" % action) 791 795 try: … … 798 802 except self.unimplemented_exc: 799 803 self.logger.warning("Action %s not implemented" % action) 800 self._send_message( "complete", "error", "Action %s not implemented" % action)804 self._send_message(cmd_id, "complete", "error", "Action %s not implemented" % action) 801 805 except Exception: 802 806 self.logger.warning("Action %s failed" % action) 803 807 self.logger.warning(traceback.format_exc()) 804 self._send_message( "complete", "error")808 self._send_message(cmd_id, "complete", "error") 805 809 raise 806 810 else: 807 811 self.logger.debug("Action %s completed with result %s" % (action, result)) 808 812 return_message = {"result": result} 809 self._send_message( "complete", "success", json.dumps(return_message))813 self._send_message(cmd_id, "complete", "success", json.dumps(return_message)) 810 814 811 815 return False, None 812 816 813 def _send_message(self, message_type, status, message=None):814 self.protocol.testdriver.send_message( message_type, status, message=message)817 def _send_message(self, cmd_id, message_type, status, message=None): 818 self.protocol.testdriver.send_message(cmd_id, message_type, status, message=message) 815 819 816 820 … … 821 825 self.context = context 822 826 self.initial_window = None 823 self.switched_frame = False824 827 825 828 def __enter__(self): … … 827 830 return 828 831 829 window_id = self.context[0] 830 if window_id: 831 self.initial_window = self.protocol.base.current_window 832 self.logger.debug("Switching to window %s" % window_id) 833 self.protocol.testdriver.switch_to_window(window_id) 834 835 for frame_id in self.context[1:]: 836 self.switched_frame = True 837 self.logger.debug("Switching to frame %s" % frame_id) 838 self.protocol.testdriver.switch_to_frame(frame_id) 832 self.initial_window = self.protocol.base.current_window 833 self.logger.debug("Switching to window %s" % self.context) 834 self.protocol.testdriver.switch_to_window(self.context) 839 835 840 836 def __exit__(self, *args): 841 if self. initial_window is notNone:842 self.logger.debug("Switching back to initial window")843 self.protocol.base.set_window(self.initial_window) 844 self.initial_window = None845 elif self.switched_frame:846 self.protocol.testdriver.switch_to_frame(None)847 self. switched_frame = False837 if self.context is None: 838 return 839 840 self.logger.debug("Switching back to initial window") 841 self.protocol.base.set_window(self.initial_window) 842 self.protocol.testdriver._switch_to_frame(None) 843 self.initial_window = None -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executormarionette.py
r267831 r268857 103 103 def set_window(self, handle): 104 104 _switch_to_window(self.marionette, handle) 105 106 def window_handles(self): 107 return self.marionette.window_handles 105 108 106 109 def load(self, url): … … 461 464 self.marionette = self.parent.marionette 462 465 463 def send_message(self, message_type, status, message=None):466 def send_message(self, cmd_id, message_type, status, message=None): 464 467 obj = { 468 "cmd_id": cmd_id, 465 469 "type": "testdriver-%s" % str(message_type), 466 470 "status": str(status) … … 470 474 self.parent.base.execute_script("window.postMessage(%s, '*')" % json.dumps(obj)) 471 475 472 def switch_to_window(self, window_id): 473 if window_id is None: 474 return 475 476 for window_handle in self.marionette.window_handles: 477 _switch_to_window(self.marionette, window_handle) 478 try: 479 handle_window_id = self.marionette.execute_script("return window.name") 480 except errors.JavascriptException: 481 continue 482 if str(handle_window_id) == window_id: 483 return 484 485 raise Exception("Window with id %s not found" % window_id) 486 487 def switch_to_frame(self, frame_number): 476 def _switch_to_frame(self, frame_number): 488 477 self.marionette.switch_to_frame(frame_number) 478 479 def _switch_to_parent_frame(self): 480 self.marionette.switch_to_parent_frame() 489 481 490 482 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executorselenium.py
r267831 r268857 61 61 def set_window(self, handle): 62 62 self.webdriver.switch_to_window(handle) 63 64 def window_handles(self): 65 return self.webdriver.window_handles 63 66 64 67 def load(self, url): … … 201 204 self.webdriver = self.parent.webdriver 202 205 203 def send_message(self, message_type, status, message=None):206 def send_message(self, cmd_id, message_type, status, message=None): 204 207 obj = { 208 "cmd_id": cmd_id, 205 209 "type": "testdriver-%s" % str(message_type), 206 210 "status": str(status) -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executorservodriver.py
r267831 r268857 76 76 def set_window(self, handle): 77 77 pass 78 79 def window_handles(self): 80 return [] 78 81 79 82 def load(self, url): -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/executorwebdriver.py
r267831 r268857 62 62 self.webdriver.window_handle = handle 63 63 64 def window_handles(self): 65 return self.webdriver.handles 66 64 67 def load(self, url): 65 68 self.webdriver.url = url … … 215 218 self.webdriver = self.parent.webdriver 216 219 217 def send_message(self, message_type, status, message=None):220 def send_message(self, cmd_id, message_type, status, message=None): 218 221 obj = { 222 "cmd_id": cmd_id, 219 223 "type": "testdriver-%s" % str(message_type), 220 224 "status": str(status) … … 224 228 self.webdriver.execute_script("window.postMessage(%s, '*')" % json.dumps(obj)) 225 229 226 def switch_to_window(self, window_id): 227 if window_id is None: 228 return 229 230 for window_handle in self.webdriver.handles: 231 self.webdriver.window_handle = window_handle 232 try: 233 handle_window_id = self.webdriver.execute_script("return window.name") 234 except client.JavascriptErrorException: 235 continue 236 if str(handle_window_id) == window_id: 237 return 238 239 raise Exception("Window with id %s not found" % window_id) 240 241 def switch_to_frame(self, frame_number): 230 def _switch_to_frame(self, frame_number): 242 231 self.webdriver.switch_frame(frame_number) 232 233 def _switch_to_parent_frame(self): 234 self.webdriver.switch_frame("parent") 243 235 244 236 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/executors/protocol.py
r267831 r268857 148 148 149 149 @abstractmethod 150 def window_handles(self): 151 """Get a list of handles to top-level browsing contexts""" 152 pass 153 154 @abstractmethod 150 155 def load(self, url): 151 156 """Load a url in the current browsing context … … 344 349 345 350 @abstractmethod 346 def send_message(self, message_type, status, message=None):351 def send_message(self, cmd_id, message_type, status, message=None): 347 352 """Send a testdriver message to the browser. 348 353 354 :param int cmd_id: The id of the command to which we're responding 349 355 :param str message_type: The kind of the message. 350 356 :param str status: Either "failure" or "success" depending on whether the … … 357 363 358 364 :param str wptrunner_id: window id""" 359 pass 360 361 def switch_to_frame(self, index): 365 if wptrunner_id is None: 366 return 367 368 stack = [str(item) for item in self.parent.base.window_handles()] 369 while stack: 370 item = stack.pop() 371 if item is None: 372 self._switch_to_parent_frame() 373 continue 374 elif isinstance(item, str): 375 self.parent.base.set_window(item) 376 else: 377 self._switch_to_frame(item) 378 379 try: 380 handle_window_id = self.parent.base.execute_script("return window.__wptrunner_id") 381 if str(handle_window_id) == wptrunner_id: 382 return 383 except Exception: 384 pass 385 frame_count = self.parent.base.execute_script("return window.length") 386 # None here makes us switch back to the parent after we've processed all the subframes 387 stack.append(None) 388 if frame_count: 389 stack.extend(reversed(range(0, frame_count))) 390 391 raise Exception("Window with id %s not found" % wptrunner_id) 392 393 @abstractmethod 394 def _switch_to_frame(self, index): 362 395 """Switch to a frame in the current window 363 396 364 397 :param int index: Frame id""" 398 pass 399 400 @abstractmethod 401 def _switch_to_parent_frame(self): 402 """Switch to the parent of the current frame""" 365 403 pass 366 404 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/testdriver-extra.js
r267831 r268857 1 1 "use strict"; 2 2 3 (function(){ 4 let pending_resolve = null; 5 let pending_reject = null; 3 (function() { 4 const is_test_context = window.__wptrunner_message_queue !== undefined; 5 const pending = new Map(); 6 6 7 let result = null; 8 let ctx_cmd_id = 0; 9 let testharness_context = null; 10 7 11 window.addEventListener("message", function(event) { 8 12 const data = event.data; … … 12 16 } 13 17 14 if (data.type !== "testdriver-complete") { 15 return; 16 } 17 18 if (data.status === "success") { 19 result = JSON.parse(data.message).result; 20 pending_resolve(result); 18 if (is_test_context && data.type === "testdriver-command") { 19 const command = data.message; 20 const ctx_id = command.cmd_id; 21 delete command.cmd_id; 22 const cmd_id = window.__wptrunner_message_queue.push(command); 23 let on_success = (data) => { 24 data.type = "testdriver-complete"; 25 data.cmd_id = ctx_id; 26 event.source.postMessage(data, "*"); 27 }; 28 let on_failure = (data) => { 29 data.type = "testdriver-complete"; 30 data.cmd_id = ctx_id; 31 event.source.postMessage(data, "*"); 32 }; 33 pending.set(cmd_id, [on_success, on_failure]); 34 } else if (data.type === "testdriver-complete") { 35 const cmd_id = data.cmd_id; 36 const [on_success, on_failure] = pending.get(cmd_id); 37 pending.clear(cmd_id); 38 const resolver = data.status === "success" ? on_success : on_failure; 39 resolver(data); 40 if (is_test_context) { 41 window.__wptrunner_process_next_event(); 42 } 43 } 44 }); 45 46 // Code copied from /common/utils.js 47 function rand_int(bits) { 48 if (bits < 1 || bits > 53) { 49 throw new TypeError(); 21 50 } else { 22 pending_reject(`${data.status}: ${data.message}`); 23 } 24 }); 25 26 let last_window_id = 0; 51 if (bits >= 1 && bits <= 30) { 52 return 0 | ((1 << bits) * Math.random()); 53 } else { 54 var high = (0 | ((1 << (bits - 30)) * Math.random())) * (1 << 30); 55 var low = 0 | ((1 << 30) * Math.random()); 56 return high + low; 57 } 58 } 59 } 60 61 function to_hex(x, length) { 62 var rv = x.toString(16); 63 while (rv.length < length) { 64 rv = "0" + rv; 65 } 66 return rv; 67 } 68 27 69 function get_window_id(win) { 28 if (win == = window) {70 if (win == window && is_test_context) { 29 71 return null; 30 72 } 31 // This is a hack until some implementations support proper window ids 32 // It won't work cross-frame 33 if (!win.name) { 34 win.name = "__wptrunner_window " + last_window_id++; 35 } 36 return win.name; 73 if (!win.__wptrunner_id) { 74 // generate a uuid 75 win.__wptrunner_id = [to_hex(rand_int(32), 8), 76 to_hex(rand_int(16), 4), 77 to_hex(0x4000 | rand_int(12), 4), 78 to_hex(0x8000 | rand_int(14), 4), 79 to_hex(rand_int(48), 12)].join("-"); 80 } 81 return win.__wptrunner_id; 37 82 } 38 83 … … 45 90 throw new Error("Browsing context for element was detached"); 46 91 } 47 let top = elementWindow.top; 48 if (elementWindow === window) { 49 if (top !== window) { 50 throw new Error("Can't load testdriver in a frame"); 51 } 52 // For the current window just return null 53 return null; 54 } 55 let rv = []; 56 let currentWindow = elementWindow; 57 while (currentWindow !== top) { 58 rv.push(Array.prototype.indexOf.call(currentWindow.parent.frames, currentWindow)); 59 currentWindow = currentWindow.parent; 60 } 61 rv.push(top !== window ? get_window_id(top) : null); 62 rv.reverse(); 63 return rv; 92 return elementWindow; 64 93 }; 65 94 … … 94 123 }; 95 124 125 const create_action = function(name, props) { 126 let cmd_id; 127 const action_msg = {type: "action", 128 action: name, 129 ...props}; 130 if (action_msg.context) { 131 action_msg.context = get_window_id(action_msg.context); 132 } 133 if (is_test_context) { 134 cmd_id = window.__wptrunner_message_queue.push(action_msg); 135 } else { 136 if (testharness_context === null) { 137 throw new Error("Tried to run in a non-testharness window without a call to set_test_context"); 138 } 139 cmd_id = ctx_cmd_id++; 140 action_msg.cmd_id = cmd_id; 141 window.test_driver.message_test({type: "testdriver-command", 142 message: action_msg}); 143 } 144 const pending_promise = new Promise(function(resolve, reject) { 145 const on_success = data => { 146 result = JSON.parse(data.message).result; 147 resolve(result); 148 }; 149 const on_failure = data => { 150 reject(`${data.status}: ${data.message}`); 151 }; 152 pending.set(cmd_id, [on_success, on_failure]); 153 }); 154 return pending_promise; 155 }; 156 96 157 window.test_driver_internal.in_automation = true; 97 158 159 window.test_driver_internal.set_test_context = function(context) { 160 if (window.__wptrunner_message_queue) { 161 throw new Error("Tried to set testharness context in a window containing testharness.js"); 162 } 163 testharness_context = context; 164 }; 165 98 166 window.test_driver_internal.click = function(element) { 167 const selector = get_selector(element); 99 168 const context = get_context(element); 100 const selector = get_selector(element); 101 const pending_promise = new Promise(function(resolve, reject) { 102 pending_resolve = resolve; 103 pending_reject = reject; 104 }); 105 window.__wptrunner_message_queue.push({"type": "action", 106 "action": "click", 107 selector, 108 context}); 109 return pending_promise; 169 return create_action("click", {selector, context}); 110 170 }; 111 171 … … 113 173 const selector = get_selector(element); 114 174 const context = get_context(element); 115 const pending_promise = new Promise(function(resolve, reject) { 116 pending_resolve = resolve; 117 pending_reject = reject; 118 }); 119 window.__wptrunner_message_queue.push({"type": "action", 120 "action": "send_keys", 121 selector, 122 keys, 123 context}); 124 return pending_promise; 125 }; 126 127 window.test_driver_internal.action_sequence = function(actions) { 128 const pending_promise = new Promise(function(resolve, reject) { 129 pending_resolve = resolve; 130 pending_reject = reject; 131 }); 132 let context = null; 175 return create_action("send_keys", {selector, keys, context}); 176 }; 177 178 window.test_driver_internal.action_sequence = function(actions, context=null) { 133 179 for (let actionSequence of actions) { 134 180 if (actionSequence.type == "pointer") { … … 146 192 } 147 193 } 148 window.__wptrunner_message_queue.push({type: "action", 149 action: "action_sequence", 150 actions, 151 context}); 152 return pending_promise; 153 }; 154 155 window.test_driver_internal.generate_test_report = function(message) { 156 const pending_promise = new Promise(function(resolve, reject) { 157 pending_resolve = resolve; 158 pending_reject = reject; 159 }); 160 window.__wptrunner_message_queue.push({"type": "action", 161 "action": "generate_test_report", 162 message}); 163 return pending_promise; 164 }; 165 166 window.test_driver_internal.set_permission = function(permission_params) { 167 const pending_promise = new Promise(function(resolve, reject) { 168 pending_resolve = resolve; 169 pending_reject = reject; 170 }); 171 window.__wptrunner_message_queue.push({"type": "action", 172 "action": "set_permission", 173 permission_params}); 174 return pending_promise; 175 }; 176 177 window.test_driver_internal.add_virtual_authenticator = function(config) { 178 const pending_promise = new Promise(function(resolve, reject) { 179 pending_resolve = resolve; 180 pending_reject = reject; 181 }); 182 window.__wptrunner_message_queue.push({"type": "action", 183 "action": "add_virtual_authenticator", 184 config}); 185 return pending_promise; 186 }; 187 188 window.test_driver_internal.remove_virtual_authenticator = function(authenticator_id) { 189 const pending_promise = new Promise(function(resolve, reject) { 190 pending_resolve = resolve; 191 pending_reject = reject; 192 }); 193 window.__wptrunner_message_queue.push({"type": "action", 194 "action": "remove_virtual_authenticator", 195 authenticator_id}); 196 return pending_promise; 197 }; 198 199 window.test_driver_internal.add_credential = function(authenticator_id, credential) { 200 const pending_promise = new Promise(function(resolve, reject) { 201 pending_resolve = resolve; 202 pending_reject = reject; 203 }); 204 window.__wptrunner_message_queue.push({"type": "action", 205 "action": "add_credential", 206 authenticator_id, credential}); 207 return pending_promise; 208 }; 209 210 window.test_driver_internal.get_credentials = function(authenticator_id) { 211 const pending_promise = new Promise(function(resolve, reject) { 212 pending_resolve = resolve; 213 pending_reject = reject; 214 }); 215 window.__wptrunner_message_queue.push({"type": "action", 216 "action": "get_credentials", 217 authenticator_id}); 218 return pending_promise; 219 }; 220 221 window.test_driver_internal.remove_credential = function(authenticator_id, credential_id) { 222 const pending_promise = new Promise(function(resolve, reject) { 223 pending_resolve = resolve; 224 pending_reject = reject; 225 }); 226 window.__wptrunner_message_queue.push({"type": "action", 227 "action": "remove_credential", 228 authenticator_id, 229 credential_id}); 230 return pending_promise; 231 }; 232 233 window.test_driver_internal.remove_all_credentials = function(authenticator_id) { 234 const pending_promise = new Promise(function(resolve, reject) { 235 pending_resolve = resolve; 236 pending_reject = reject; 237 }); 238 window.__wptrunner_message_queue.push({"type": "action", 239 "action": "remove_all_credentials", 240 authenticator_id}); 241 return pending_promise; 242 }; 243 244 window.test_driver_internal.set_user_verified = function(authenticator_id, uv) { 245 const pending_promise = new Promise(function(resolve, reject) { 246 pending_resolve = resolve; 247 pending_reject = reject; 248 }); 249 window.__wptrunner_message_queue.push({"type": "action", 250 "action": "set_user_verified", 251 authenticator_id, 252 uv}); 253 return pending_promise; 194 return create_action("action_sequence", {actions, context}); 195 }; 196 197 window.test_driver_internal.generate_test_report = function(message, context=null) { 198 return create_action("generate_test_report", {message, context}); 199 }; 200 201 window.test_driver_internal.set_permission = function(permission_params, context=null) { 202 return create_action("set_permission", {permission_params, context}); 203 }; 204 205 window.test_driver_internal.add_virtual_authenticator = function(config, context=null) { 206 return create_action("add_virtual_authenticator", {config, context}); 207 }; 208 209 window.test_driver_internal.remove_virtual_authenticator = function(authenticator_id, context=null) { 210 return create_action("remove_virtual_authenticator", {authenticator_id, context}); 211 }; 212 213 window.test_driver_internal.add_credential = function(authenticator_id, credential, context=null) { 214 return create_action("add_credential", {authenticator_id, credential, context}); 215 }; 216 217 window.test_driver_internal.get_credentials = function(authenticator_id, context=null) { 218 return create_action("get_credentials", {authenticator_id, context}); 219 }; 220 221 window.test_driver_internal.remove_credential = function(authenticator_id, credential_id, context=null) { 222 return create_action("remove_credential", {authenticator_id, credential_id, context}); 223 }; 224 225 window.test_driver_internal.remove_all_credentials = function(authenticator_id, context=null) { 226 return create_action("remove_all_credentials", {authenticator_id, context}); 227 }; 228 229 window.test_driver_internal.set_user_verified = function(authenticator_id, uv, context=null) { 230 return create_action("set_user_verified", {authenticator_id, uv, context}); 254 231 }; 255 232 })(); -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/testharnessreport.js
r252358 r268857 1 1 class MessageQueue { 2 2 constructor() { 3 this.item_id = 0; 3 4 this._queue = []; 4 5 } 5 6 6 7 push(item) { 8 let cmd_id = this.item_id++; 9 item.id = cmd_id; 7 10 this._queue.push(item); 8 11 __wptrunner_process_next_event(); 12 return cmd_id; 9 13 } 10 14 -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/webdriver_server.py
r267831 r268857 132 132 return [self.binary, 133 133 cmd_arg("port", str(self.port)), 134 cmd_arg("url-base", self.base_path) if self.base_path else ""] + self._args 134 cmd_arg("url-base", self.base_path) if self.base_path else "", 135 cmd_arg("enable-chrome-logs")] + self._args 135 136 136 137 class CWTChromeDriverServer(WebDriverServer): -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/wptcommandline.py
r267831 r268857 315 315 servo_group = parser.add_argument_group("Chrome-specific") 316 316 servo_group.add_argument("--enable-mojojs", action="store_true", default=False, 317 help="Enable MojoJS for testing. Mojo bindings need to be available in " 318 "_venv2/mojojs.") 317 help="Enable MojoJS for testing. Note that this flag is usally " 318 "enabled automatically by `wpt run`, if it succeeds in downloading " 319 "the right version of mojojs.zip or if --mojojs-path is specified.") 320 servo_group.add_argument("--mojojs-path", 321 help="Path to mojojs gen/ directory. If it is not specified, `wpt run` " 322 "will download and extract mojojs.zip into _venv2/mojojs/gen.") 319 323 320 324 sauce_group = parser.add_argument_group("Sauce Labs-specific") -
trunk/WebDriverTests/imported/w3c/tools/wptrunner/wptrunner/wptrunner.py
r267831 r268857 214 214 **kwargs) 215 215 216 mojojs_path = kwargs["mojojs_path"] if kwargs["enable_mojojs"] else None 217 216 218 recording.set(["startup", "start_environment"]) 217 219 with env.TestEnvironment(test_paths, … … 223 225 env_extras, 224 226 kwargs["enable_quic"], 225 kwargs["enable_mojojs"]) as test_environment:227 mojojs_path) as test_environment: 226 228 recording.set(["startup", "ensure_environment"]) 227 229 try: -
trunk/WebDriverTests/imported/w3c/webdriver/tests/perform_actions/support/refine.py
r238881 r268857 10 10 hex_suffix = key[key.index("+") + 1:] 11 11 e["key"] = unichr(int(hex_suffix, 16)) 12 13 # WebKit sets code as 'Unidentified' for unidentified key codes, but 14 # tests expect ''. 15 if "code" in e and e["code"] == "Unidentified": 16 e["code"] = "" 12 17 return events 13 18 -
trunk/WebDriverTests/imported/w3c/webdriver/tests/print/printcmd.py
r267831 r268857 28 28 response = do_print(session, {}) 29 29 value = assert_success(response) 30 pdf = base64.decodestring( value)30 pdf = base64.decodestring(ensure_binary(value)) 31 31 assert_pdf(pdf) 32 32 -
trunk/WebDriverTests/imported/w3c/webdriver/tests/print/user_prompts.py
r267831 r268857 8 8 from tests.support.asserts import assert_dialog_handled, assert_error, assert_success 9 9 from tests.support.inline import inline 10 from printcmd import do_print, assert_pdf10 from .printcmd import do_print, assert_pdf 11 11 12 12
Note:
See TracChangeset
for help on using the changeset viewer.