Skip to content

Commit 73c376b

Browse files
committed
Limit the scope of the minimum-scale fix
1 parent c6b7bf4 commit 73c376b

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

injected/integration-test/web-compat.spec.js

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -496,7 +496,7 @@ test.describe('Viewport fixes', () => {
496496
const expectedWidth = width < 1280 ? 980 : 1280;
497497
const viewportValue = await page.evaluate(getViewportValue);
498498
expect(viewportValue).toEqual(
499-
`width=${expectedWidth}, initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, minimum-scale=0`,
499+
`width=${expectedWidth}, initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes`,
500500
);
501501
});
502502

@@ -511,7 +511,7 @@ test.describe('Viewport fixes', () => {
511511
const expectedWidth = width < 1280 ? 980 : 1280;
512512
const viewportValue = await page.evaluate(getViewportValue);
513513
expect(viewportValue).toEqual(
514-
`initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, maximum-scale=10, width=${expectedWidth}, minimum-scale=0`,
514+
`initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, maximum-scale=10, width=${expectedWidth}`,
515515
);
516516
});
517517

@@ -571,6 +571,25 @@ test.describe('Viewport fixes', () => {
571571
const width = await page.evaluate('screen.width');
572572
const expectedWidth = width < 1280 ? 980 : 1280;
573573
const viewportValue = await page.evaluate(getViewportValue);
574+
expect(viewportValue).toEqual(
575+
`width=${expectedWidth}, initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, something-something`,
576+
);
577+
});
578+
579+
test('should override minimum-scale, if it is set', async ({ page }) => {
580+
await gotoAndWait(
581+
page,
582+
'/blank.html',
583+
{
584+
site: { enabledFeatures: ['webCompat'] },
585+
featureSettings: { webCompat: { viewportWidth: 'enabled' } },
586+
desktopModeEnabled: true,
587+
},
588+
'document.head.innerHTML += \'<meta name="viewport" content="width=device-width, initial-scale=2, user-scalable=no, minimum-scale=1, something-something">\'',
589+
);
590+
const width = await page.evaluate('screen.width');
591+
const expectedWidth = width < 1280 ? 980 : 1280;
592+
const viewportValue = await page.evaluate(getViewportValue);
574593
expect(viewportValue).toEqual(
575594
`width=${expectedWidth}, initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, minimum-scale=0, something-something`,
576595
);
@@ -591,7 +610,7 @@ test.describe('Viewport fixes', () => {
591610
const expectedWidth = width < 1280 ? 980 : 1280;
592611
const viewportValue = await page.evaluate(getViewportValue);
593612
expect(viewportValue).toEqual(
594-
`width=${expectedWidth}, initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, minimum-scale=0, something-something`,
613+
`width=${expectedWidth}, initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, something-something`,
595614
);
596615
});
597616

@@ -611,7 +630,7 @@ test.describe('Viewport fixes', () => {
611630
const expectedWidth = width < 1280 ? 980 : 1280;
612631
const viewportValue = await page.evaluate(getViewportValue);
613632
expect(viewportValue).toEqual(
614-
`initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, maximum-scale=10, width=${expectedWidth}, minimum-scale=0, something-something`,
633+
`initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, maximum-scale=10, width=${expectedWidth}, something-something`,
615634
);
616635
});
617636

@@ -630,7 +649,7 @@ test.describe('Viewport fixes', () => {
630649
const expectedWidth = width < 1280 ? 980 : 1280;
631650
const viewportValue = await page.evaluate(getViewportValue);
632651
expect(viewportValue).toEqual(
633-
`width=${expectedWidth}, initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, minimum-scale=0, something-something`,
652+
`width=${expectedWidth}, initial-scale=${(width / expectedWidth).toFixed(3)}, user-scalable=yes, something-something`,
634653
);
635654
});
636655
});

injected/src/features/web-compat.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -719,8 +719,11 @@ export class WebCompat extends ContentFeature {
719719
// Race condition: depending on the loading state of the page, initial scale may or may not be respected, so the page may look zoomed-in after applying this hack.
720720
// Usually this is just an annoyance, but it may be a bigger issue if user-scalable=no is set, so we remove it too.
721721
forcedValues['user-scalable'] = 'yes';
722-
// make sure you can zoom out to see the whole page. See https://app.asana.com/1/137249556945/project/1206777341262243/task/1207691440660873
723-
forcedValues['minimum-scale'] = 0;
722+
const minimumScalePart = parsedViewportContent.find(([key]) => key === 'minimum-scale');
723+
if (minimumScalePart) {
724+
// override minimum-scale to make sure you can zoom out to see the whole page. See https://app.asana.com/1/137249556945/project/1206777341262243/task/1207691440660873
725+
forcedValues['minimum-scale'] = 0;
726+
}
724727
} else {
725728
// mobile mode with a viewport tag
726729
// fix an edge case where WebView forces the wide viewport

0 commit comments

Comments
 (0)