chromium/third_party/blink/web_tests/http/tests/devtools/network/network-initiator-from-console.js

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import {TestRunner} from 'test_runner';
import {NetworkTestRunner} from 'network_test_runner';

import * as UIModule from 'devtools/ui/legacy/legacy.js';
import * as SDK from 'devtools/core/sdk/sdk.js';

(async function() {
  TestRunner.addResult(`Tests that there is no javascript error when console evaluation causes resource loading.\n`);
  await TestRunner.showPanel('network');

  TestRunner.reloadPage(step1);

  function step1() {
    TestRunner.networkManager.addEventListener(SDK.NetworkManager.Events.RequestStarted, onRequest);
    var str = '';
    str += 'var s = document.createElement("script");';
    str += 's.src = "resources/silent_script.js";';
    str += 'document.head.appendChild(s);';
    UIModule.Context.Context.instance().flavor(SDK.RuntimeModel.ExecutionContext).evaluate({expression: str, objectGroup: 'console'});
  }

  function onRequest(event) {
    var request = event.data.request;
    if (/silent_script.js/.test(request.url()))
      step2();
  }

  function step2() {
    var results = NetworkTestRunner.findRequestsByURLPattern(/silent_script.js/);
    if (results.length === 0)
      return;

    TestRunner.completeTest();
  }
})();