Win11's tablet mode is different from Win10's tablet mode in ways both subtle and gross. Avoid unifying them implicitly, and make it clear that they should not be unified _explicitly_ without testing. Unfortunately, Windows 11's API for checking whether the device is in tablet mode is broken -- it requires one to know whether the device is a tablet to interpret the return value, but there is no documented API providing that information. We use a heuristic partly borrowed from Chromium and partly based on independent investigation. As all of the code using WindowsUIUtils effectively only checked for Win10's tablet mode, this commit technically has no functional changes. Differential Revision: https://phabricator.services.mozilla.com/D224244
49 lines
1.6 KiB
Plaintext
49 lines
1.6 KiB
Plaintext
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
interface mozIDOMWindowProxy;
|
|
interface imgIContainer;
|
|
|
|
[scriptable, builtinclass, uuid(aa8a0ecf-96a1-418c-b80e-f24ae18bbedc)]
|
|
interface nsIWindowsUIUtils : nsISupports
|
|
{
|
|
readonly attribute long systemSmallIconSize;
|
|
readonly attribute long systemLargeIconSize;
|
|
|
|
void setWindowIcon(in mozIDOMWindowProxy aWindow, in imgIContainer aSmallIcon, in imgIContainer aLargeIcon);
|
|
|
|
void setWindowIconFromExe(in mozIDOMWindowProxy aWindow, in AString aExe, in unsigned short aIndex);
|
|
|
|
void setWindowIconNoData(in mozIDOMWindowProxy aWindow);
|
|
|
|
/**
|
|
* Whether the OS is currently in Win10's Tablet Mode. Always false on
|
|
* versions of Windows other than Win10.
|
|
*
|
|
* (Win10 tablet mode is sufficiently different from Win11 tablet mode that
|
|
* there is no single getter to retrieve whether we're in a generic "tablet
|
|
* mode".)
|
|
*/
|
|
readonly attribute boolean inWin10TabletMode;
|
|
|
|
/**
|
|
* Whether the OS is currently in Windows 11's tablet mode. Always false on
|
|
* versions of Windows prior to Win11.
|
|
*
|
|
* (Win11 tablet mode is sufficiently different from Win10 tablet mode that
|
|
* there is no single getter to retrieve whether we're in a generic "tablet
|
|
* mode".)
|
|
*/
|
|
readonly attribute boolean inWin11TabletMode;
|
|
|
|
/**
|
|
* Share URL
|
|
*/
|
|
void shareUrl(in AString shareTitle, in AString urlToShare);
|
|
};
|