Skip to content

Commit e7d341f

Browse files
Adam RaineDevtools-frontend LUCI CQ
authored andcommitted
[CrUX] Only set current page result on auto refresh
CrUXManager.ts will keep track of the current page CrUX data. However, it should not override the current page data when the field data setup checks different pages for valid CrUX data. Fixed: 391990608 Change-Id: I1965e69c94879775bc455d363cb101c1dcf27d6a Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6198694 Auto-Submit: Adam Raine <[email protected]> Reviewed-by: Connor Clark <[email protected]> Commit-Queue: Adam Raine <[email protected]>
1 parent 53a3dbe commit e7d341f

File tree

3 files changed

+21
-15
lines changed

3 files changed

+21
-15
lines changed

front_end/models/crux-manager/CrUXManager.test.ts

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ describeWithMockConnection('CrUXManager', () => {
348348
isPrimaryFrame: () => false,
349349
} as SDK.ResourceTreeModel.ResourceTreeFrame);
350350

351-
const result = await cruxManager.getFieldDataForCurrentPage();
351+
const result = await cruxManager.getFieldDataForCurrentPageForTesting();
352352

353353
assert.deepEqual(result.warnings, []);
354354
assert.strictEqual(getFieldDataMock.callCount, 1);
@@ -360,7 +360,7 @@ describeWithMockConnection('CrUXManager', () => {
360360
cruxManager.getConfigSetting().set(
361361
{enabled: false, override: 'https://example.com/override', overrideEnabled: true});
362362

363-
const result = await cruxManager.getFieldDataForCurrentPage();
363+
const result = await cruxManager.getFieldDataForCurrentPageForTesting();
364364

365365
assert.deepEqual(result.warnings, ['Field data is configured for a different URL than the current page.']);
366366
assert.strictEqual(getFieldDataMock.callCount, 1);
@@ -377,7 +377,7 @@ describeWithMockConnection('CrUXManager', () => {
377377
}],
378378
});
379379

380-
const result = await cruxManager.getFieldDataForCurrentPage();
380+
const result = await cruxManager.getFieldDataForCurrentPageForTesting();
381381

382382
assert.deepEqual(result.warnings, ['Field data is configured for a different URL than the current page.']);
383383
assert.strictEqual(getFieldDataMock.callCount, 1);
@@ -396,7 +396,7 @@ describeWithMockConnection('CrUXManager', () => {
396396
}],
397397
});
398398

399-
const result = await cruxManager.getFieldDataForCurrentPage();
399+
const result = await cruxManager.getFieldDataForCurrentPageForTesting();
400400

401401
assert.deepEqual(result.warnings, ['Field data is configured for a different URL than the current page.']);
402402
assert.strictEqual(getFieldDataMock.callCount, 1);
@@ -406,7 +406,7 @@ describeWithMockConnection('CrUXManager', () => {
406406
it('should use inspected URL if main document is unavailable', async () => {
407407
target.setInspectedURL(urlString`https://example.com/inspected`);
408408

409-
const result = await cruxManager.getFieldDataForCurrentPage();
409+
const result = await cruxManager.getFieldDataForCurrentPageForTesting();
410410

411411
assert.deepEqual(result.warnings, []);
412412
assert.strictEqual(getFieldDataMock.callCount, 1);
@@ -416,7 +416,7 @@ describeWithMockConnection('CrUXManager', () => {
416416
it('should wait for inspected URL if main document and inspected URL are unavailable', async () => {
417417
target.setInspectedURL(Platform.DevToolsPath.EmptyUrlString);
418418

419-
const finishPromise = cruxManager.getFieldDataForCurrentPage();
419+
const finishPromise = cruxManager.getFieldDataForCurrentPageForTesting();
420420

421421
await triggerMicroTaskQueue();
422422

@@ -430,7 +430,8 @@ describeWithMockConnection('CrUXManager', () => {
430430
});
431431

432432
it('getSelectedFieldMetricData - should take from selected page scope', async () => {
433-
await cruxManager.getFieldDataForCurrentPage();
433+
cruxManager.getConfigSetting().set({enabled: true});
434+
await cruxManager.refresh();
434435

435436
let data: CrUXManager.MetricResponse|undefined;
436437

@@ -448,7 +449,8 @@ describeWithMockConnection('CrUXManager', () => {
448449
});
449450

450451
it('should take from selected device scope', async () => {
451-
await cruxManager.getFieldDataForCurrentPage();
452+
cruxManager.getConfigSetting().set({enabled: true});
453+
await cruxManager.refresh();
452454
cruxManager.fieldPageScope = 'url';
453455

454456
let data: CrUXManager.MetricResponse|undefined;
@@ -470,7 +472,8 @@ describeWithMockConnection('CrUXManager', () => {
470472
cruxManager.fieldDeviceOption = 'AUTO';
471473
assert.strictEqual(cruxManager.getSelectedDeviceScope(), 'ALL');
472474

473-
await cruxManager.getFieldDataForCurrentPage();
475+
cruxManager.getConfigSetting().set({enabled: true});
476+
await cruxManager.refresh();
474477
assert.strictEqual(cruxManager.getSelectedDeviceScope(), 'DESKTOP');
475478

476479
for (const device of EmulationModel.EmulatedDevices.EmulatedDevicesList.instance().standard()) {
@@ -493,7 +496,7 @@ describeWithMockConnection('CrUXManager', () => {
493496
cruxManager.addEventListener(CrUXManager.Events.FIELD_DATA_CHANGED, event => {
494497
eventBodies.push(event.data);
495498
});
496-
getFieldDataMock = sinon.stub(cruxManager, 'getFieldDataForCurrentPage');
499+
getFieldDataMock = sinon.stub(cruxManager, 'getFieldDataForPage');
497500
getFieldDataMock.resolves({
498501
'origin-ALL': null,
499502
'origin-DESKTOP': null,
@@ -503,6 +506,7 @@ describeWithMockConnection('CrUXManager', () => {
503506
'url-DESKTOP': null,
504507
'url-PHONE': null,
505508
'url-TABLET': null,
509+
warnings: [],
506510
});
507511
});
508512

front_end/models/crux-manager/CrUXManager.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,6 @@ export class CrUXManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
202202
}
203203

204204
await Promise.all(promises);
205-
this.#pageResult = pageResult;
206205
} catch (err) {
207206
console.error(err);
208207
} finally {
@@ -228,6 +227,10 @@ export class CrUXManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
228227
}
229228
}
230229

230+
async getFieldDataForCurrentPageForTesting(): Promise<PageResult> {
231+
return this.#getFieldDataForCurrentPage();
232+
}
233+
231234
/**
232235
* In general, this function should use the main document URL
233236
* (i.e. the URL after all redirects but before SPA navigations)
@@ -237,13 +240,12 @@ export class CrUXManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
237240
* back to the currently inspected URL (i.e. what is displayed in the omnibox) if
238241
* the main document URL cannot be found.
239242
*/
240-
async getFieldDataForCurrentPage(): Promise<PageResult> {
243+
async #getFieldDataForCurrentPage(): Promise<PageResult> {
241244
const currentUrl = this.#mainDocumentUrl || await this.#getInspectedURL();
242245
const urlForCrux = this.#configSetting.get().overrideEnabled ? this.#configSetting.get().override || '' :
243246
this.#getMappedUrl(currentUrl);
244247

245248
const result = await this.getFieldDataForPage(urlForCrux);
246-
this.#pageResult = result;
247249
if (currentUrl !== urlForCrux) {
248250
result.warnings.push(i18nString(UIStrings.fieldOverrideWarning));
249251
}
@@ -289,7 +291,7 @@ export class CrUXManager extends Common.ObjectWrapper.ObjectWrapper<EventTypes>
289291
return;
290292
}
291293

292-
this.#pageResult = await this.getFieldDataForCurrentPage();
294+
this.#pageResult = await this.#getFieldDataForCurrentPage();
293295
this.dispatchEventToListeners(Events.FIELD_DATA_CHANGED, this.#pageResult);
294296
}
295297

front_end/panels/timeline/components/LiveMetricsView.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ describeWithMockConnection('LiveMetricsView', () => {
717717
warnings: [],
718718
};
719719

720-
sinon.stub(CrUXManager.CrUXManager.instance(), 'getFieldDataForCurrentPage').callsFake(async () => mockFieldData);
720+
sinon.stub(CrUXManager.CrUXManager.instance(), 'getFieldDataForPage').callsFake(async () => mockFieldData);
721721
CrUXManager.CrUXManager.instance().getConfigSetting().set({enabled: true, override: ''});
722722
});
723723

0 commit comments

Comments
 (0)