Skip to content

Commit 89a2418

Browse files
committed
squash 'resources/unpacked/devtools' changes from 781a13a..b68fd2e
b68fd2e [Devtools] Fix offline checkbox state sharing across Network and Application>Service Workers panels 73a2c5b DevTools: Add 'caret-color' CSS property to _colorAwareProperties 9db9a2b Add certificate error handling to devtools. 8713e2d [DevTools] Rework Popover API bfea3be [DevTools] Fallback to MainFrameNavigated event url in Security panel 2b57967 DevTools: Tweak flamechart selection d04622a DevTools: kill Common.Throttler.flush() method dbfaa60 DevTools: introduce SDK.SourceMapManager a221e62 [DevTools] Remove dependency from TargetManager to ResourceTreeModel fdd03a0 [DevTools] Update SecurityDetails in Security panel if State changes 6628483 DevTools: Fix Network panel warning icon display when offline/throttled 57f5212 Revert of DevTools: launch What's New from experiments (patchset #1 id:1 of https://codereview.chromium.org/2749423003/ ) c8477b2 DevTools: Only show gutter diff for Network UISourceCodes ccc15d9 [DevTools] Wait for cachedResourcesLoaded in ConsoleModel git-subtree-dir: resources/unpacked/devtools git-subtree-split: b68fd2e
1 parent 912f350 commit 89a2418

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+946
-904
lines changed

BUILD.gn

+1
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@ all_devtools_files = [
475475
"front_end/sdk/ServiceWorkerCacheModel.js",
476476
"front_end/sdk/ServiceWorkerManager.js",
477477
"front_end/sdk/SourceMap.js",
478+
"front_end/sdk/SourceMapManager.js",
478479
"front_end/sdk/Target.js",
479480
"front_end/sdk/TargetManager.js",
480481
"front_end/sdk/TracingManager.js",

front_end/animation/AnimationTimeline.js

+39-45
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,8 @@ Animation.AnimationTimeline = class extends UI.VBox {
131131
this._updatePlaybackControls();
132132

133133
this._previewContainer = this.contentElement.createChild('div', 'animation-timeline-buffer');
134-
this._popoverHelper = new UI.PopoverHelper(this._previewContainer, true);
135-
this._popoverHelper.initializeCallbacks(
136-
this._getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.bind(this));
134+
this._popoverHelper = new UI.PopoverHelper(this._previewContainer, this._getPopoverRequest.bind(this));
135+
this._popoverHelper.setDisableOnClick(true);
137136
this._popoverHelper.setTimeout(0);
138137
var emptyBufferHint = this.contentElement.createChild('div', 'animation-timeline-buffer-hint');
139138
emptyBufferHint.textContent = Common.UIString('Listening for animations...');
@@ -162,49 +161,44 @@ Animation.AnimationTimeline = class extends UI.VBox {
162161
}
163162

164163
/**
165-
* @param {!Element} element
166164
* @param {!Event} event
167-
* @return {!Element|!AnchorBox|undefined}
168-
*/
169-
_getPopoverAnchor(element, event) {
170-
if (element.isDescendant(this._previewContainer))
171-
return element;
172-
}
173-
174-
/**
175-
* @param {!Element|!AnchorBox} anchor
176-
* @param {!UI.GlassPane} popover
177-
* @return {!Promise<boolean>}
178-
*/
179-
_showPopover(anchor, popover) {
180-
var animGroup;
181-
for (var group of this._previewMap.keysArray()) {
182-
if (this._previewMap.get(group).element === anchor.parentElement)
183-
animGroup = group;
184-
}
185-
console.assert(animGroup);
186-
var screenshots = animGroup.screenshots();
187-
if (!screenshots.length)
188-
return Promise.resolve(false);
189-
190-
var fulfill;
191-
var promise = new Promise(x => fulfill = x);
192-
if (!screenshots[0].complete)
193-
screenshots[0].onload = onFirstScreenshotLoaded.bind(null, screenshots);
194-
else
195-
onFirstScreenshotLoaded(screenshots);
196-
return promise;
197-
198-
/**
199-
* @param {!Array.<!Image>} screenshots
200-
*/
201-
function onFirstScreenshotLoaded(screenshots) {
202-
new Animation.AnimationScreenshotPopover(screenshots).show(popover.contentElement);
203-
fulfill(true);
204-
}
205-
}
206-
207-
_onHidePopover() {
165+
* @return {?UI.PopoverRequest}
166+
*/
167+
_getPopoverRequest(event) {
168+
var element = event.target;
169+
if (!element.isDescendant(this._previewContainer))
170+
return null;
171+
172+
return {
173+
box: event.target.boxInWindow(),
174+
show: popover => {
175+
var animGroup;
176+
for (var group of this._previewMap.keysArray()) {
177+
if (this._previewMap.get(group).element === element.parentElement)
178+
animGroup = group;
179+
}
180+
console.assert(animGroup);
181+
var screenshots = animGroup.screenshots();
182+
if (!screenshots.length)
183+
return Promise.resolve(false);
184+
185+
var fulfill;
186+
var promise = new Promise(x => fulfill = x);
187+
if (!screenshots[0].complete)
188+
screenshots[0].onload = onFirstScreenshotLoaded.bind(null, screenshots);
189+
else
190+
onFirstScreenshotLoaded(screenshots);
191+
return promise;
192+
193+
/**
194+
* @param {!Array.<!Image>} screenshots
195+
*/
196+
function onFirstScreenshotLoaded(screenshots) {
197+
new Animation.AnimationScreenshotPopover(screenshots).show(popover.contentElement);
198+
fulfill(true);
199+
}
200+
}
201+
};
208202
}
209203

210204
_togglePauseAll() {

front_end/audits/AuditController.js

+9-3
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ Audits.AuditController = class {
3838
*/
3939
constructor(auditsPanel) {
4040
this._auditsPanel = auditsPanel;
41-
SDK.targetManager.addEventListener(SDK.TargetManager.Events.Load, this._didMainResourceLoad, this);
41+
SDK.targetManager.addModelListener(
42+
SDK.ResourceTreeModel, SDK.ResourceTreeModel.Events.Load, this._didMainResourceLoad, this);
4243
SDK.targetManager.addModelListener(
4344
SDK.NetworkManager, SDK.NetworkManager.Events.RequestFinished, this._didLoadResource, this);
4445
}
@@ -141,15 +142,20 @@ Audits.AuditController = class {
141142
*/
142143
_reloadResources(callback) {
143144
this._pageReloadCallback = callback;
144-
SDK.targetManager.reloadPage();
145+
SDK.ResourceTreeModel.reloadAllPages();
145146
}
146147

147148
_didLoadResource() {
148149
if (this._pageReloadCallback && this._progress && this._progress.isCanceled())
149150
this._pageReloadCallback();
150151
}
151152

152-
_didMainResourceLoad() {
153+
/**
154+
* @param {!Common.Event} event
155+
*/
156+
_didMainResourceLoad(event) {
157+
if (event.data.resourceTreeModel.target() !== SDK.targetManager.mainTarget())
158+
return;
153159
if (this._pageReloadCallback) {
154160
var callback = this._pageReloadCallback;
155161
delete this._pageReloadCallback;

front_end/bindings/CSSWorkspaceBinding.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,9 @@ Bindings.CSSWorkspaceBinding.ModelInfo = class {
9999
];
100100

101101
this._stylesSourceMapping = new Bindings.StylesSourceMapping(cssModel, workspace);
102-
this._sassSourceMapping =
103-
new Bindings.SASSSourceMapping(cssModel, workspace, Bindings.NetworkProject.forTarget(cssModel.target()));
102+
var sourceMapManager = cssModel.sourceMapManager();
103+
this._sassSourceMapping = new Bindings.SASSSourceMapping(
104+
sourceMapManager, workspace, Bindings.NetworkProject.forTarget(cssModel.target()));
104105

105106
/** @type {!Multimap<!SDK.CSSStyleSheetHeader, !Bindings.CSSWorkspaceBinding.LiveLocation>} */
106107
this._locations = new Multimap();

front_end/bindings/SASSSourceMapping.js

+12-9
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,21 @@
3333
*/
3434
Bindings.SASSSourceMapping = class {
3535
/**
36-
* @param {!SDK.CSSModel} cssModel
36+
* @param {!SDK.SourceMapManager} sourceMapManager
3737
* @param {!Workspace.Workspace} workspace
3838
* @param {!Bindings.NetworkProject} networkProject
3939
*/
40-
constructor(cssModel, workspace, networkProject) {
41-
this._cssModel = cssModel;
40+
constructor(sourceMapManager, workspace, networkProject) {
41+
this._sourceMapManager = sourceMapManager;
4242
this._networkProject = networkProject;
4343
this._workspace = workspace;
4444
this._eventListeners = [
45-
this._cssModel.addEventListener(SDK.CSSModel.Events.SourceMapAttached, this._sourceMapAttached, this),
46-
this._cssModel.addEventListener(SDK.CSSModel.Events.SourceMapDetached, this._sourceMapDetached, this),
47-
this._cssModel.addEventListener(SDK.CSSModel.Events.SourceMapChanged, this._sourceMapChanged, this)
45+
this._sourceMapManager.addEventListener(
46+
SDK.SourceMapManager.Events.SourceMapAttached, this._sourceMapAttached, this),
47+
this._sourceMapManager.addEventListener(
48+
SDK.SourceMapManager.Events.SourceMapDetached, this._sourceMapDetached, this),
49+
this._sourceMapManager.addEventListener(
50+
SDK.SourceMapManager.Events.SourceMapChanged, this._sourceMapChanged, this)
4851
];
4952
}
5053

@@ -59,7 +62,7 @@ Bindings.SASSSourceMapping = class {
5962
*/
6063
_sourceMapAttached(event) {
6164
var header = /** @type {!SDK.CSSStyleSheetHeader} */ (event.data);
62-
var sourceMap = this._cssModel.sourceMapForHeader(header);
65+
var sourceMap = this._sourceMapManager.sourceMapForClient(header);
6366
for (var sassURL of sourceMap.sourceURLs()) {
6467
var contentProvider = sourceMap.sourceContentProvider(sassURL, Common.resourceTypes.SourceMapStyleSheet);
6568
var embeddedContent = sourceMap.embeddedContentByURL(sassURL);
@@ -84,7 +87,7 @@ Bindings.SASSSourceMapping = class {
8487
_sourceMapChanged(event) {
8588
var sourceMap = /** @type {!SDK.SourceMap} */ (event.data.sourceMap);
8689
var newSources = /** @type {!Map<string, string>} */ (event.data.newSources);
87-
var headers = this._cssModel.headersForSourceMap(sourceMap);
90+
var headers = this._sourceMapManager.clientsForSourceMap(sourceMap);
8891
var handledUISourceCodes = new Set();
8992
for (var header of headers) {
9093
Bindings.cssWorkspaceBinding.updateLocations(header);
@@ -111,7 +114,7 @@ Bindings.SASSSourceMapping = class {
111114
var header = rawLocation.header();
112115
if (!header)
113116
return null;
114-
var sourceMap = this._cssModel.sourceMapForHeader(header);
117+
var sourceMap = this._sourceMapManager.sourceMapForClient(header);
115118
if (!sourceMap)
116119
return null;
117120
var entry = sourceMap.findEntry(rawLocation.lineNumber, rawLocation.columnNumber);

front_end/common/Throttler.js

-5
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,6 @@ Common.Throttler = class {
5757
this._innerSchedule(forceTimerUpdate);
5858
}
5959

60-
flush() {
61-
if (this._process)
62-
this._onTimeout();
63-
}
64-
6560
/**
6661
* @param {boolean} forceTimerUpdate
6762
*/

front_end/components/DOMPresentationUtils.js

+11-17
Original file line numberDiff line numberDiff line change
@@ -148,36 +148,30 @@ Components.DOMPresentationUtils.linkifyDeferredNodeReference = function(deferred
148148
* @param {!SDK.Target} target
149149
* @param {string} originalImageURL
150150
* @param {boolean} showDimensions
151-
* @param {function(!Element=)} userCallback
152151
* @param {!Object=} precomputedFeatures
152+
* @return {!Promise<?Element>}
153153
*/
154154
Components.DOMPresentationUtils.buildImagePreviewContents = function(
155-
target, originalImageURL, showDimensions, userCallback, precomputedFeatures) {
155+
target, originalImageURL, showDimensions, precomputedFeatures) {
156156
var resourceTreeModel = SDK.ResourceTreeModel.fromTarget(target);
157-
if (!resourceTreeModel) {
158-
userCallback();
159-
return;
160-
}
157+
if (!resourceTreeModel)
158+
return Promise.resolve(/** @type {?Element} */ (null));
161159
var resource = resourceTreeModel.resourceForURL(originalImageURL);
162160
var imageURL = originalImageURL;
163161
if (!isImageResource(resource) && precomputedFeatures && precomputedFeatures.currentSrc) {
164162
imageURL = precomputedFeatures.currentSrc;
165163
resource = resourceTreeModel.resourceForURL(imageURL);
166164
}
167-
if (!isImageResource(resource)) {
168-
userCallback();
169-
return;
170-
}
165+
if (!isImageResource(resource))
166+
return Promise.resolve(/** @type {?Element} */ (null));
171167

168+
var fulfill;
169+
var promise = new Promise(x => fulfill = x);
172170
var imageElement = createElement('img');
173171
imageElement.addEventListener('load', buildContent, false);
174-
imageElement.addEventListener('error', errorCallback, false);
172+
imageElement.addEventListener('error', () => fulfill(null), false);
175173
resource.populateImageSource(imageElement);
176-
177-
function errorCallback() {
178-
// Drop the event parameter when invoking userCallback.
179-
userCallback();
180-
}
174+
return promise;
181175

182176
/**
183177
* @param {?SDK.Resource} resource
@@ -212,7 +206,7 @@ Components.DOMPresentationUtils.buildImagePreviewContents = function(
212206
container.createChild('tr').createChild('td').createChild('span', 'description').textContent =
213207
String.sprintf('currentSrc: %s', imageURL.trimMiddle(100));
214208
}
215-
userCallback(container);
209+
fulfill(container);
216210
}
217211
};
218212

0 commit comments

Comments
 (0)