28
28
#include " mozilla/IMEStateManager.h"
29
29
#include " mozilla/LookAndFeel.h"
30
30
#include " mozilla/MouseEvents.h"
31
+ #include " mozilla/widget/ScreenManager.h"
31
32
#include " mozilla/NativeKeyBindingsType.h"
32
33
#include " mozilla/NullPrincipal.h"
33
34
#include " mozilla/PointerLockManager.h"
@@ -604,7 +605,7 @@ BrowserChild::SetDimensions(DimensionRequest&& aRequest) {
604
605
NS_IMETHODIMP
605
606
BrowserChild::GetDimensions (DimensionKind aDimensionKind, int32_t * aX,
606
607
int32_t * aY, int32_t * aCx, int32_t * aCy) {
607
- ScreenIntRect rect = GetOuterRect ();
608
+ LayoutDeviceIntRect rect = GetOuterRect ();
608
609
if (aDimensionKind == DimensionKind::Inner) {
609
610
if (aX || aY) {
610
611
return NS_ERROR_NOT_IMPLEMENTED;
@@ -1007,7 +1008,7 @@ mozilla::ipc::IPCResult BrowserChild::RecvUpdateRemotePrintSettings(
1007
1008
}
1008
1009
1009
1010
void BrowserChild::DoFakeShow (const ParentShowInfo& aParentShowInfo) {
1010
- OwnerShowInfo ownerInfo{ScreenIntSize (), ScrollbarPreference::Auto,
1011
+ OwnerShowInfo ownerInfo{LayoutDeviceIntSize (), ScrollbarPreference::Auto,
1011
1012
nsSizeMode_Normal};
1012
1013
RecvShow (aParentShowInfo, ownerInfo);
1013
1014
mDidFakeShow = true ;
@@ -1125,20 +1126,20 @@ mozilla::ipc::IPCResult BrowserChild::RecvUpdateDimensions(
1125
1126
mHasValidInnerSize = true ;
1126
1127
}
1127
1128
1128
- ScreenIntSize screenSize = GetInnerSize ();
1129
- ScreenIntRect screenRect = GetOuterRect ();
1130
-
1129
+ const LayoutDeviceIntSize innerSize = GetInnerSize ();
1131
1130
// Make sure to set the size on the document viewer first. The
1132
1131
// MobileViewportManager needs the content viewer size to be updated before
1133
1132
// the reflow, otherwise it gets a stale size when it computes a new CSS
1134
1133
// viewport.
1135
1134
nsCOMPtr<nsIBaseWindow> baseWin = do_QueryInterface (WebNavigation ());
1136
- baseWin->SetPositionAndSize (0 , 0 , screenSize .width , screenSize .height ,
1135
+ baseWin->SetPositionAndSize (0 , 0 , innerSize .width , innerSize .height ,
1137
1136
nsIBaseWindow::eRepaint);
1138
1137
1139
- mPuppetWidget ->Resize (screenRect.x + mClientOffset .x + mChromeOffset .x ,
1140
- screenRect.y + mClientOffset .y + mChromeOffset .y ,
1141
- screenSize.width , screenSize.height , true );
1138
+ const LayoutDeviceIntRect outerRect =
1139
+ GetOuterRect () + mClientOffset + mChromeOffset ;
1140
+
1141
+ mPuppetWidget ->Resize (outerRect.x , outerRect.y , innerSize.width ,
1142
+ innerSize.height , true );
1142
1143
1143
1144
RecvSafeAreaInsetsChanged (mPuppetWidget ->GetSafeAreaInsets ());
1144
1145
@@ -3345,23 +3346,22 @@ void BrowserChild::NotifyJankedAnimations(
3345
3346
3346
3347
mozilla::ipc::IPCResult BrowserChild::RecvUIResolutionChanged (
3347
3348
const float & aDpi, const int32_t & aRounding, const double & aScale) {
3348
- ScreenIntSize oldScreenSize = GetInnerSize ();
3349
+ const LayoutDeviceIntSize oldInnerSize = GetInnerSize ();
3349
3350
if (aDpi > 0 ) {
3350
3351
mPuppetWidget ->UpdateBackingScaleCache (aDpi, aRounding, aScale);
3351
3352
}
3352
3353
3353
- ScreenIntSize screenSize = GetInnerSize ();
3354
- if (mHasValidInnerSize && oldScreenSize != screenSize) {
3355
- ScreenIntRect screenRect = GetOuterRect ();
3356
-
3354
+ const LayoutDeviceIntSize innerSize = GetInnerSize ();
3355
+ if (mHasValidInnerSize && oldInnerSize != innerSize) {
3357
3356
// See RecvUpdateDimensions for the order of these operations.
3358
3357
nsCOMPtr<nsIBaseWindow> baseWin = do_QueryInterface (WebNavigation ());
3359
- baseWin->SetPositionAndSize (0 , 0 , screenSize .width , screenSize .height ,
3358
+ baseWin->SetPositionAndSize (0 , 0 , innerSize .width , innerSize .height ,
3360
3359
nsIBaseWindow::eRepaint);
3361
3360
3362
- mPuppetWidget ->Resize (screenRect.x + mClientOffset .x + mChromeOffset .x ,
3363
- screenRect.y + mClientOffset .y + mChromeOffset .y ,
3364
- screenSize.width , screenSize.height , true );
3361
+ const LayoutDeviceIntRect outerRect =
3362
+ GetOuterRect () + mClientOffset + mChromeOffset ;
3363
+ mPuppetWidget ->Resize (outerRect.x , outerRect.y , innerSize.width ,
3364
+ innerSize.height , true );
3365
3365
}
3366
3366
3367
3367
nsCOMPtr<Document> document (GetTopLevelDocument ());
@@ -3375,32 +3375,23 @@ mozilla::ipc::IPCResult BrowserChild::RecvUIResolutionChanged(
3375
3375
}
3376
3376
3377
3377
mozilla::ipc::IPCResult BrowserChild::RecvSafeAreaInsetsChanged (
3378
- const mozilla::ScreenIntMargin & aSafeAreaInsets) {
3378
+ const mozilla::LayoutDeviceIntMargin & aSafeAreaInsets) {
3379
3379
mPuppetWidget ->UpdateSafeAreaInsets (aSafeAreaInsets);
3380
3380
3381
- nsCOMPtr<nsIScreenManager> screenMgr =
3382
- do_GetService (" @mozilla.org/gfx/screenmanager;1" );
3383
- ScreenIntMargin currentSafeAreaInsets;
3384
- if (screenMgr) {
3385
- // aSafeAreaInsets is for current screen. But we have to calculate
3386
- // safe insets for content window.
3387
- int32_t x, y, cx, cy;
3388
- GetDimensions (DimensionKind::Outer, &x, &y, &cx, &cy);
3389
- nsCOMPtr<nsIScreen> screen;
3390
- screenMgr->ScreenForRect (x, y, cx, cy, getter_AddRefs (screen));
3391
-
3392
- if (screen) {
3393
- LayoutDeviceIntRect windowRect (x + mClientOffset .x + mChromeOffset .x ,
3394
- y + mClientOffset .y + mChromeOffset .y , cx,
3395
- cy);
3396
- currentSafeAreaInsets = nsContentUtils::GetWindowSafeAreaInsets (
3397
- screen, aSafeAreaInsets, windowRect);
3398
- }
3381
+ LayoutDeviceIntMargin currentSafeAreaInsets;
3382
+ // aSafeAreaInsets is for current screen. But we have to calculate safe insets
3383
+ // for content window.
3384
+ LayoutDeviceIntRect outerRect = GetOuterRect ();
3385
+ RefPtr<Screen> screen = widget::ScreenManager::GetSingleton ().ScreenForRect (
3386
+ RoundedToInt (outerRect / mPuppetWidget ->GetDesktopToDeviceScale ()));
3387
+ if (screen) {
3388
+ LayoutDeviceIntRect windowRect = outerRect + mClientOffset + mChromeOffset ;
3389
+ currentSafeAreaInsets = nsContentUtils::GetWindowSafeAreaInsets (
3390
+ screen, aSafeAreaInsets, windowRect);
3399
3391
}
3400
3392
3401
3393
if (nsCOMPtr<Document> document = GetTopLevelDocument ()) {
3402
- nsPresContext* presContext = document->GetPresContext ();
3403
- if (presContext) {
3394
+ if (nsPresContext* presContext = document->GetPresContext ()) {
3404
3395
presContext->SetSafeAreaInsets (currentSafeAreaInsets);
3405
3396
}
3406
3397
}
@@ -3441,11 +3432,8 @@ bool BrowserChild::DeallocPPaymentRequestChild(PPaymentRequestChild* actor) {
3441
3432
return true ;
3442
3433
}
3443
3434
3444
- ScreenIntSize BrowserChild::GetInnerSize () {
3445
- LayoutDeviceIntSize innerSize =
3446
- RoundedToInt (mUnscaledInnerSize * mPuppetWidget ->GetDefaultScale ());
3447
- return ViewAs<ScreenPixel>(
3448
- innerSize, PixelCastJustification::LayoutDeviceIsScreenForTabDims);
3435
+ LayoutDeviceIntSize BrowserChild::GetInnerSize () {
3436
+ return RoundedToInt (mUnscaledInnerSize * mPuppetWidget ->GetDefaultScale ());
3449
3437
};
3450
3438
3451
3439
Maybe<nsRect> BrowserChild::GetVisibleRect () const {
@@ -3489,11 +3477,8 @@ BrowserChild::GetTopLevelViewportVisibleRectInSelfCoords() const {
3489
3477
return rect;
3490
3478
}
3491
3479
3492
- ScreenIntRect BrowserChild::GetOuterRect () {
3493
- LayoutDeviceIntRect outerRect =
3494
- RoundedToInt (mUnscaledOuterRect * mPuppetWidget ->GetDefaultScale ());
3495
- return ViewAs<ScreenPixel>(
3496
- outerRect, PixelCastJustification::LayoutDeviceIsScreenForTabDims);
3480
+ LayoutDeviceIntRect BrowserChild::GetOuterRect () {
3481
+ return RoundedToInt (mUnscaledOuterRect * mPuppetWidget ->GetDefaultScale ());
3497
3482
}
3498
3483
3499
3484
void BrowserChild::PaintWhileInterruptingJS () {
0 commit comments