Fix: Utils - STANDARD-MODE for OS #744

This commit is contained in:
alstjr7375 2023-08-13 04:01:27 +09:00
parent 0686d16346
commit 8ad0d18e14
7 changed files with 317 additions and 9 deletions

View file

@ -21,6 +21,22 @@ $dupList: (ab cd efgh efgh efgh ijk);
}
}
@include test-module("Remove at list using list [fn]") {
@include test("simple") {
@include assert-equal(
list.remove-list($simpleList, ("cd" "efgh")),
(ab ijk)
);
}
@include test("duplicate") {
@include assert-equal(
list.remove-list($dupList, ("cd" "efgh")),
(ab ijk)
);
}
}
@include test-module("Convert to str [fn]") {
@include test("simple") {
@include assert-equal(

View file

@ -1,8 +1,11 @@
@use "true" as *;
@use "example" as *;
@use "../src/utils/native_menu";
@use "../src/utils/os" as OS;
@include test-module("Native Menu Option - ESR [mix]") {
@include OS.ESR-MODE;
@include test-module("Native Menu Option [mix]") {
@include test("simple") {
@include assert {
@include output {
@ -117,3 +120,121 @@
}
}
}
@include test-module("Native Menu Option - Standard [mix]") {
@include OS.STANDARD-MODE;
@include test("simple") {
@include assert {
@include output {
@include native_menu.NativeToolkitMenu {
@include example;
}
@include native_menu.NativeMenuPopup {
@include example;
}
}
@include expect {
@supports -moz-bool-pref("widget.macos.native-context-menus") or -moz-bool-pref("widget.gtk.native-context-menus") {
@include example;
}
menupopup:is(#historyMenuPopup, #bookmarksMenuPopup),
menupopup:not([placespopup="true"]) {
@include example;
}
}
}
}
@include test("native menu - with windows media") {
@include assert {
@include output {
@include native_menu.NativeMenu(true) {
@include example;
}
@include native_menu.NonNativeMenu(true) {
@include example;
}
@include native_menu.WinNativeMenu(true) {
@include example;
}
@include native_menu.WinNonNativeMenu(true) {
@include example;
}
}
@include expect {
@media not (-moz-windows-non-native-menus) {
@media (-moz-platform: windows) {
@include example;
}
}
@supports not -moz-bool-pref("userChrome.theme.non_native_menu") {
@media (-moz-gtk-csd-available) {
@include example;
}
}
@media (-moz-windows-non-native-menus) {
@media (-moz-platform: windows) {
@include example;
}
}
@supports -moz-bool-pref("userChrome.theme.non_native_menu") {
@media (-moz-gtk-csd-available) {
@include example;
}
}
@media not (-moz-windows-non-native-menus) {
@media (-moz-platform: windows) {
@include example;
}
}
@media (-moz-windows-non-native-menus) {
@media (-moz-platform: windows) {
@include example;
}
}
}
}
}
@include test("native menu - without windows media") {
@include assert {
@include output {
@include native_menu.NativeMenu {
@include example;
}
@include native_menu.NonNativeMenu {
@include example;
}
@include native_menu.WinNativeMenu {
@include example;
}
@include native_menu.WinNonNativeMenu {
@include example;
}
}
@include expect {
@media not (-moz-windows-non-native-menus) {
@include example;
}
@supports not -moz-bool-pref("userChrome.theme.non_native_menu") {
@media (-moz-gtk-csd-available) {
@include example;
}
}
@media (-moz-windows-non-native-menus) {
@include example;
}
@supports -moz-bool-pref("userChrome.theme.non_native_menu") {
@media (-moz-gtk-csd-available) {
@include example;
}
}
@media not (-moz-windows-non-native-menus) {
@include example;
}
@media (-moz-windows-non-native-menus) {
@include example;
}
}
}
}
}

View file

@ -2,8 +2,9 @@
@use "example" as *;
@use "../src/utils/os" as *;
// TODO: Need more tests..
@include test-module("Create OS related media [mix]") {
@include test-module("Create OS related media - ESR [mix]") {
@include ESR-MODE;
@include test("win7") {
@include assert {
@include output {
@ -145,3 +146,145 @@
}
}
}
@include test-module("Create OS related media - Standard [mix]") {
@include STANDARD-MODE;
@include test("win7") {
@include assert {
@include output {
@include OS($win7) {
@include example;
}
}
@include expect {
// IGNORE
}
}
}
@include test("win8") {
@include assert {
@include output {
@include OS($win8) {
@include example;
}
}
@include expect {
// IGNORE
}
}
}
@include test("win10") {
@include assert {
@include output {
@include OS($win10) {
@include example;
}
}
@include expect {
// AS Windows
@media (-moz-platform: windows) {
@include example;
}
}
}
}
@include test("linux") {
@include assert {
@include output {
@include OS($linux) {
@include example;
}
}
@include expect {
@media (-moz-gtk-csd-available) {
@include example;
}
}
}
}
@include test("mac") {
@include assert {
@include output {
@include OS($mac) {
@include example;
}
}
@include expect {
@supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
@include example;
}
}
}
}
@include test("bigsur") {
@include assert {
@include output {
@include OS($bigsur) {
@include example;
}
}
@include expect {
@media (-moz-mac-big-sur-theme: 0) {
@include example;
}
}
}
}
@include test("win") {
@include assert {
@include output {
@include OS($win) {
@include example;
}
}
@include expect {
@media (-moz-platform: windows) {
@include example;
}
}
}
}
@include test("all os - win7, win8, win10, mac, bigsur, linux") {
@include assert {
@include output {
@include OS($win7, $win8, $win10, $mac, $bigsur, $linux) {
@include example;
}
}
@include expect {
@media (-moz-platform: windows), (-moz-mac-big-sur-theme: 0), (-moz-gtk-csd-available) {
@include example;
}
@supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
@include example;
}
}
}
}
@include test("all os - win, mac, bigsur, linux") {
@include assert {
@include output {
@include OS($win, $mac, $bigsur, $linux) {
@include example;
}
}
@include expect {
@media (-moz-platform: windows), (-moz-mac-big-sur-theme: 0), (-moz-gtk-csd-available) {
@include example;
}
@supports -moz-bool-pref("layout.css.osx-font-smoothing.enabled") {
@include example;
}
}
}
}
}

View file

@ -16,6 +16,7 @@
@namespace xul "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
@namespace html "http://www.w3.org/1999/xhtml";
@include ESR-MODE;
/** Default Theme - Contrast **************************************************/
@include Option("userChrome.theme.built_in_contrast") {
@import "theme/built_in";

View file

@ -11,6 +11,7 @@
@namespace xul url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
@namespace html url("http://www.w3.org/1999/xhtml");
@include ESR-MODE;
/** Compatibility *************************************************************/
@import "contents/compatibility";

View file

@ -4,17 +4,25 @@
@function remove($list, $value, $recursive: false) {
$result: ();
@for $i from 1 through length($list) {
@if type-of(nth($list, $i)) == list and $recursive {
$result: append($result, remove(nth($list, $i), $value, $recursive));
} @else if nth($list, $i) != $value {
$result: append($result, nth($list, $i));
@each $item in $list {
@if type-of($item) == list and $recursive {
$result: append($result, remove($item, $value, $recursive));
} @else if $item != $value {
$result: append($result, $item);
}
}
@return $result;
}
@function remove-list($list, $removeList, $recursive: false) {
@each $removeItem in $removeList {
$list: remove($list, $removeItem, $recursive);
}
@return $list;
}
@function to-string($list, $glue: '', $is-nested: false) {
$result: null;

View file

@ -31,13 +31,14 @@ $_win-media: (
$_win-media: map.set($_win-media, $_win-key, $result-template);
}
$_moz-platform-windows: list.nth($_win-template, 2);
@function _win-only-result() {
$result-template: ();
@each $_win-value in map.values($_win-media) {
$result-template: list.append($result-template, list.nth($_win-value, 1));
}
@return list.append($result-template, list.nth($_win-template, 2))
@return list.append($result-template, $_moz-platform-windows)
}
$_win-media: map.merge(
@ -54,7 +55,24 @@ $_os-media: map.merge(
);
//== Mixin =====================================================================
$osESR: false !default;
@mixin ESR-MODE() {
$osESR: true !global;
}
@mixin STANDARD-MODE() {
$osESR: false !global;
}
@mixin OS($osNames...) {
$_os-media: $_os-media; // as local
@if not $osESR {
$osNames: list-utils.remove-list($osNames, ($win7 $win8));
$_os-media: map.set($_os-media, $win10, $_moz-platform-windows);
$_os-media: map.set($_os-media, $win, $_moz-platform-windows);
}
$osMedias: ();
@each $osName in $osNames {
$osMedia: map.get($_os-media, $osName);