chromium/third_party/blink/web_tests/http/tests/devtools/network/network-requestblocking-icon.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 * as UI from 'devtools/ui/legacy/legacy.js';
import * as SDK from 'devtools/core/sdk/sdk.js';

(async function() {
  TestRunner.addResult(
      `Ensures the icon is properly displayed when network request blocking setting is enabled/disabled.\n`);

  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockingEnabled(false);
  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockedPatterns([]);
  dumpIconResult();
  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockingEnabled(true);
  dumpIconResult();
  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockedPatterns([{url: '*', enabled: true}]);
  dumpIconResult();
  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockingEnabled(false);
  dumpIconResult();

  TestRunner.addResult('Loading Network Module');
  await import('devtools/panels/network/network.js');
  TestRunner.addResult('Network Module Loaded');

  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockingEnabled(false);
  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockedPatterns([]);
  dumpIconResult();
  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockingEnabled(true);
  dumpIconResult();
  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockedPatterns([{url: '*', enabled: true}]);
  dumpIconResult();
  SDK.NetworkManager.MultitargetNetworkManager.instance().setBlockingEnabled(false);
  dumpIconResult();
  TestRunner.completeTest();

  function dumpIconResult() {
    const icons = UI.InspectorView.InspectorView.instance().tabbedPane.tabsElement.getElementsByTagName('devtools-icon');
    const warnings = [...icons].filter(icon => icon.data.iconName === 'warning-filled');
    TestRunner.addResult('Is blocking: ' + SDK.NetworkManager.MultitargetNetworkManager.instance().isBlocking());
    TestRunner.addResult(Boolean(warnings.length) ? 'Has Icon' : 'Does Not Have Icon');
    TestRunner.addResult('');
  }
})();