Index: third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js b/third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8743227abb8ef443d54b94a0781d9b416178b1a8 |
--- /dev/null |
+++ b/third_party/WebKit/Source/devtools/front_end/integration_test_runner/IntegrationTestRunner.js |
@@ -0,0 +1,99 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+/** |
+ * Export all public members onto TestRunner namespace so test writers have a simpler API. |
+ * @fileoverview using private properties isn't a Closure violation in tests. |
+ * @suppress {accessControls} |
+ */ |
+ |
+/** |
+ * @param {!SDK.Target} target |
+ */ |
+IntegrationTestRunner._setupTestHelpers = function(target) { |
+ TestRunner.CSSAgent = target.cssAgent(); |
+ TestRunner.DeviceOrientationAgent = target.deviceOrientationAgent(); |
+ TestRunner.DOMAgent = target.domAgent(); |
+ TestRunner.DOMDebuggerAgent = target.domdebuggerAgent(); |
+ TestRunner.DebuggerAgent = target.debuggerAgent(); |
+ TestRunner.EmulationAgent = target.emulationAgent(); |
+ TestRunner.HeapProfilerAgent = target.heapProfilerAgent(); |
+ TestRunner.InspectorAgent = target.inspectorAgent(); |
+ TestRunner.NetworkAgent = target.networkAgent(); |
+ TestRunner.PageAgent = target.pageAgent(); |
+ TestRunner.ProfilerAgent = target.profilerAgent(); |
+ TestRunner.RuntimeAgent = target.runtimeAgent(); |
+ TestRunner.TargetAgent = target.targetAgent(); |
+ |
+ TestRunner.networkManager = target.model(SDK.NetworkManager); |
+ TestRunner.securityOriginManager = target.model(SDK.SecurityOriginManager); |
+ TestRunner.resourceTreeModel = target.model(SDK.ResourceTreeModel); |
+ TestRunner.debuggerModel = target.model(SDK.DebuggerModel); |
+ TestRunner.runtimeModel = target.model(SDK.RuntimeModel); |
+ TestRunner.domModel = target.model(SDK.DOMModel); |
+ TestRunner.domDebuggerModel = target.model(SDK.DOMDebuggerModel); |
+ TestRunner.cssModel = target.model(SDK.CSSModel); |
+ TestRunner.cpuProfilerModel = target.model(SDK.CPUProfilerModel); |
+ TestRunner.serviceWorkerManager = target.model(SDK.ServiceWorkerManager); |
+ TestRunner.tracingManager = target.model(SDK.TracingManager); |
+ TestRunner.mainTarget = target; |
+}; |
+ |
+/** |
+ * @param {string} code |
+ * @param {!Function} callback |
+ */ |
+TestRunner.evaluateInPage = async function(code, callback) { |
+ var response = await TestRunner.RuntimeAgent.invoke_evaluate({expression: code, objectGroup: 'console'}); |
+ if (!response[Protocol.Error]) { |
+ TestRunner.safeWrap(callback)( |
+ TestRunner.runtimeModel.createRemoteObject(response.result), response.exceptionDetails); |
+ } |
+}; |
+ |
+/** |
+ * @param {string} code |
+ * @return {!Promise<!SDK.RemoteObject>} |
+ */ |
+TestRunner.evaluateInPagePromise = function(code) { |
+ return new Promise(success => TestRunner.evaluateInPage(code, success)); |
+}; |
+ |
+/** |
+ * @param {!Function} callback |
+ */ |
+TestRunner.deprecatedRunAfterPendingDispatches = function(callback) { |
+ var targets = SDK.targetManager.targets(); |
+ var promises = targets.map(target => new Promise(resolve => target._deprecatedRunAfterPendingDispatches(resolve))); |
+ Promise.all(promises).then(TestRunner.safeWrap(callback)); |
+}; |
+ |
+/** @type {boolean} */ |
+IntegrationTestRunner._startedTest = false; |
+ |
+/** |
+ * @implements {SDK.TargetManager.Observer} |
+ */ |
+IntegrationTestRunner.TestObserver = class { |
+ /** |
+ * @param {!SDK.Target} target |
+ * @override |
+ */ |
+ targetAdded(target) { |
+ if (IntegrationTestRunner._startedTest) |
+ return; |
+ IntegrationTestRunner._startedTest = true; |
+ IntegrationTestRunner._setupTestHelpers(target); |
+ TestRunner.executeTestScript(); |
+ } |
+ |
+ /** |
+ * @param {!SDK.Target} target |
+ * @override |
+ */ |
+ targetRemoved(target) { |
+ } |
+}; |
+ |
+SDK.targetManager.observeTargets(new IntegrationTestRunner.TestObserver()); |