~/Projects/chrome-devtools-frontend
git clone https://code.lsong.org/chrome-devtools-frontend
Commit
- Commit
- 0a0140ebd173370364933b6c2578674431484cdf
- Author
- Danil Somsikov <[email protected]>
- Date
- 2022-11-17 15:16:11 +0100 +0100
- Diffstat
front_end/panels/layers/BUILD.gn | 1 front_end/panels/layers/LayersPanel.ts | 10 test/unittests/front_end/BUILD.gn | 1 test/unittests/front_end/helpers/EnvironmentHelpers.ts | 4 test/unittests/front_end/panels/layers/BUILD.gn | 15 ++ test/unittests/front_end/panels/layers/LayersPanel_test.ts | 42 ++++++++
Using TargetManager.mainFrameTarget instead of relying on the first target seen in the LayersPanel Bug: 1370050 Change-Id: I9dabdb91fd7aefdfe36697aa87506b4b43bf0835 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4034207 Auto-Submit: Danil Somsikov <[email protected]> Reviewed-by: Kateryna Prokopenko <[email protected]> Commit-Queue: Danil Somsikov <[email protected]>
diff --git a/front_end/panels/layers/BUILD.gn b/front_end/panels/layers/BUILD.gn index 3a2f87f90370fb505d7b7619b38970d5beb5df55..b2dd0f1c73acb6262a4597330973693781131048 100644 --- a/front_end/panels/layers/BUILD.gn +++ b/front_end/panels/layers/BUILD.gn @@ -31,6 +31,7 @@ visibility = [ ":*", "../../../test/unittests/front_end/entrypoints/missing_entrypoints/*", + "../../../test/unittests/front_end/panels/layers/*", "../../entrypoints/*", ] diff --git a/front_end/panels/layers/LayersPanel.ts b/front_end/panels/layers/LayersPanel.ts index ea5daa799156362faf543e758ae00e155f8a912b..1a1d50c6a2cdf67d6e1dbbea137bc8bf9b6fb202 100644 --- a/front_end/panels/layers/LayersPanel.ts +++ b/front_end/panels/layers/LayersPanel.ts @@ -57,8 +57,9 @@ private model: LayerTreeModel|null; private readonly layerViewHost: LayerViewer.LayerViewHost.LayerViewHost; private readonly layerTreeOutline: LayerViewer.LayerTreeOutline.LayerTreeOutline; private readonly rightSplitWidget: UI.SplitWidget.SplitWidget; +/* * modification, are permitted provided that the following conditions are - * Copyright (C) 2013 Google Inc. All rights reserved. + * * Redistributions of source code must retain the above copyright private tabbedPane: UI.TabbedPane.TabbedPane; private readonly layerDetailsView: LayerViewer.LayerDetailsView.LayerDetailsView; private readonly paintProfilerView: LayerPaintProfilerView; @@ -98,11 +99,10 @@ this.tabbedPane.addEventListener(UI.TabbedPane.Events.TabClosed, this.onTabClosed, this); this.updateThrottler = new Common.Throttler.Throttler(100); } - * notice, this list of conditions and the following disclaimer. +/* * modification, are permitted provided that the following conditions are * notice, this list of conditions and the following disclaimer. - * met: - if (!layersPanelInstance || forceNew) { + if (!layersPanelInstance || opts?.forceNew) { layersPanelInstance = new LayersPanel(); } @@ -127,7 +128,7 @@ super.willHide(); } targetAdded(target: SDK.Target.Target): void { - if (this.model) { + if (target !== SDK.TargetManager.TargetManager.instance().mainFrameTarget()) { return; } this.model = target.model(LayerTreeModel); diff --git a/test/unittests/front_end/BUILD.gn b/test/unittests/front_end/BUILD.gn index 2a7c1b0d46bdcdea68c601fd8d808a59aa1f74e6..7a363deb7e7035664e2ff1adefd4dd4126220902 100644 --- a/test/unittests/front_end/BUILD.gn +++ b/test/unittests/front_end/BUILD.gn @@ -40,6 +40,7 @@ "panels/coverage", "panels/css_overview", "panels/elements", "panels/issues", + "panels/layers", "panels/lighthouse", "panels/media", "panels/network", diff --git a/test/unittests/front_end/helpers/EnvironmentHelpers.ts b/test/unittests/front_end/helpers/EnvironmentHelpers.ts index 68deb193385d23104dc7ae108c9d1f2e43aedcae..7ffca36a1c2edb4ee80344601842b67c194ad3e1 100644 --- a/test/unittests/front_end/helpers/EnvironmentHelpers.ts +++ b/test/unittests/front_end/helpers/EnvironmentHelpers.ts @@ -65,6 +65,8 @@ set: () => {}, addChangeListener: () => {}, removeChangeListener: () => {}, setDisabled: () => {}, + setTitle: () => {}, + title: () => {}, }), moduleSetting: () => ({ get: () => [], @@ -72,6 +74,8 @@ set: () => {}, addChangeListener: () => {}, removeChangeListener: () => {}, setDisabled: () => {}, + setTitle: () => {}, + title: () => {}, }), } as unknown as Common.Settings.Settings); } diff --git a/test/unittests/front_end/panels/layers/BUILD.gn b/test/unittests/front_end/panels/layers/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..c201b00581060bf84d899f02c01f1e0e154ab53f --- /dev/null +++ b/test/unittests/front_end/panels/layers/BUILD.gn @@ -0,0 +1,15 @@ +# Copyright 2021 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. + +import("../../../../../third_party/typescript/typescript.gni") + +ts_library("layers") { + testonly = true + sources = [ "LayersPanel_test.ts" ] + + deps = [ + "../../../../../front_end/panels/layers:bundle", + "../../helpers", + ] +} diff --git a/test/unittests/front_end/panels/layers/LayersPanel_test.ts b/test/unittests/front_end/panels/layers/LayersPanel_test.ts new file mode 100644 index 0000000000000000000000000000000000000000..4ebb95acb1ee081892a25125f0fbb73e374277df --- /dev/null +++ b/test/unittests/front_end/panels/layers/LayersPanel_test.ts @@ -0,0 +1,42 @@ +// Copyright 2022 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. + +const {assert} = chai; + +import * as Layers from '../../../../../front_end/panels/layers/layers.js'; +import * as SDK from '../../../../../front_end/core/sdk/sdk.js'; +import * as UI from '../../../../../front_end/ui/legacy/legacy.js'; +import {assertNotNullOrUndefined} from '../../../../../front_end/core/platform/platform.js'; +import {createTarget, stubNoopSettings} from '../../helpers/EnvironmentHelpers.js'; +import {describeWithMockConnection} from '../../helpers/MockConnection.js'; + +describeWithMockConnection('LayersPanel', async () => { + const tests = (targetFactory: () => SDK.Target.Target) => { + let target: SDK.Target.Target; + + beforeEach(async () => { + target = targetFactory(); + const actionRegistryInstance = UI.ActionRegistry.ActionRegistry.instance({forceNew: true}); + UI.ShortcutRegistry.ShortcutRegistry.instance({forceNew: true, actionRegistry: actionRegistryInstance}); + stubNoopSettings(); + }); + + it('udpates 3d view when layer painted', async () => { + const panel = Layers.LayersPanel.LayersPanel.instance({forceNew: true}); + const layerTreeModel = target.model(Layers.LayerTreeModel.LayerTreeModel); + assertNotNullOrUndefined(layerTreeModel); + const updateLayerSnapshot = sinon.stub(panel.layers3DView, 'updateLayerSnapshot'); + const LAYER = {id: () => 'TEST_LAYER'} as Layers.LayerTreeModel.AgentLayer; + layerTreeModel.dispatchEventToListeners(Layers.LayerTreeModel.Events.LayerPainted, LAYER); + assert.isTrue(updateLayerSnapshot.calledOnceWith(LAYER)); + }); + }; + + describe('without tab taget', () => tests(() => createTarget())); + describe('with tab taget', () => tests(() => { + const tabTarget = createTarget({type: SDK.Target.Type.Tab}); + createTarget({parentTarget: tabTarget, subtype: 'prerender'}); + return createTarget({parentTarget: tabTarget}); + })); +});