Commit ed6b36f0 authored by Rune Lillesveen's avatar Rune Lillesveen Committed by Commit Bot

Remove support for (prefers-color-scheme: no-preference).

The 'no-preference' value was removed from the spec per CSSWG
resolution.

Intent to ship:

https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/ragu5Is6vCw

Bug: 1091806
Change-Id: I6410f99badd26ad18fddadf014115dd754ca6aec
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2232922Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarAnders Hartvoll Ruud <andruud@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarTobias Sargeant <tobiasjs@chromium.org>
Commit-Queue: Rune Lillesveen <futhark@chromium.org>
Cr-Commit-Position: refs/heads/master@{#776895}
parent 8872fd61
...@@ -529,14 +529,13 @@ void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env, ...@@ -529,14 +529,13 @@ void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env,
break; break;
} }
} }
web_prefs->preferred_color_scheme = web_prefs->preferred_color_scheme = is_dark_mode
is_dark_mode ? blink::PreferredColorScheme::kDark ? blink::PreferredColorScheme::kDark
: blink::PreferredColorScheme::kNoPreference; : blink::PreferredColorScheme::kLight;
if (is_dark_mode) { if (is_dark_mode) {
switch (Java_AwSettings_getForceDarkBehaviorLocked(env, obj)) { switch (Java_AwSettings_getForceDarkBehaviorLocked(env, obj)) {
case ForceDarkBehavior::FORCE_DARK_ONLY: { case ForceDarkBehavior::FORCE_DARK_ONLY: {
web_prefs->preferred_color_scheme = web_prefs->preferred_color_scheme = blink::PreferredColorScheme::kLight;
blink::PreferredColorScheme::kNoPreference;
web_prefs->force_dark_mode_enabled = true; web_prefs->force_dark_mode_enabled = true;
break; break;
} }
...@@ -547,7 +546,7 @@ void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env, ...@@ -547,7 +546,7 @@ void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env,
} }
// Blink's behavior is that if the preferred color scheme matches the // Blink's behavior is that if the preferred color scheme matches the
// supported color scheme, then force dark will be disabled, otherwise // supported color scheme, then force dark will be disabled, otherwise
// the preferred color scheme will be reset to no preference. Therefore // the preferred color scheme will be reset to 'light'. Therefore
// when enabling force dark, we also set the preferred color scheme to // when enabling force dark, we also set the preferred color scheme to
// dark so that dark themed content will be preferred over force // dark so that dark themed content will be preferred over force
// darkening. // darkening.
...@@ -558,8 +557,7 @@ void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env, ...@@ -558,8 +557,7 @@ void AwSettings::PopulateWebPreferencesLocked(JNIEnv* env,
} }
} }
} else { } else {
web_prefs->preferred_color_scheme = web_prefs->preferred_color_scheme = blink::PreferredColorScheme::kLight;
blink::PreferredColorScheme::kNoPreference;
web_prefs->force_dark_mode_enabled = false; web_prefs->force_dark_mode_enabled = false;
} }
} }
......
...@@ -49,7 +49,7 @@ public class DarkModeTest { ...@@ -49,7 +49,7 @@ public class DarkModeTest {
@SmallTest @SmallTest
public void testUAOnlyDarkening() throws Throwable { public void testUAOnlyDarkening() throws Throwable {
// If WebView uses UA only darkening strategy prefer-color-scheme should always been set to // If WebView uses UA only darkening strategy prefer-color-scheme should always been set to
// NoPreference to avoid double darkening regardless whether web-page supports dark theme. // 'light' to avoid double darkening regardless whether web-page supports dark theme.
mSettings.setForceDarkMode(ForceDarkMode.FORCE_DARK_ON); mSettings.setForceDarkMode(ForceDarkMode.FORCE_DARK_ON);
mSettings.setForceDarkBehavior(ForceDarkBehavior.FORCE_DARK_ONLY); mSettings.setForceDarkBehavior(ForceDarkBehavior.FORCE_DARK_ONLY);
...@@ -89,7 +89,7 @@ public class DarkModeTest { ...@@ -89,7 +89,7 @@ public class DarkModeTest {
mSettings.setForceDarkMode(ForceDarkMode.FORCE_DARK_ON); mSettings.setForceDarkMode(ForceDarkMode.FORCE_DARK_ON);
mSettings.setForceDarkBehavior(ForceDarkBehavior.PREFER_MEDIA_QUERY_OVER_FORCE_DARK); mSettings.setForceDarkBehavior(ForceDarkBehavior.PREFER_MEDIA_QUERY_OVER_FORCE_DARK);
// If web page does not support dark theme prefer-color-scheme should be set to NoPreference // If web page does not support dark theme prefer-color-scheme should be set to 'light'
assertNotDarkScheme(mContents); assertNotDarkScheme(mContents);
final String supportsDarkScheme = final String supportsDarkScheme =
......
...@@ -3436,11 +3436,9 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs( ...@@ -3436,11 +3436,9 @@ void ChromeContentBrowserClient::OverrideWebkitPrefs(
web_prefs->preferred_color_scheme = blink::PreferredColorScheme::kDark; web_prefs->preferred_color_scheme = blink::PreferredColorScheme::kDark;
break; break;
case ui::NativeTheme::PreferredColorScheme::kLight: case ui::NativeTheme::PreferredColorScheme::kLight:
case ui::NativeTheme::PreferredColorScheme::kNoPreference:
web_prefs->preferred_color_scheme = blink::PreferredColorScheme::kLight; web_prefs->preferred_color_scheme = blink::PreferredColorScheme::kLight;
break; break;
case ui::NativeTheme::PreferredColorScheme::kNoPreference:
web_prefs->preferred_color_scheme =
blink::PreferredColorScheme::kNoPreference;
} }
#endif // !defined(OS_ANDROID) #endif // !defined(OS_ANDROID)
......
...@@ -77,7 +77,7 @@ IPC_ENUM_TRAITS_MIN_MAX_VALUE( ...@@ -77,7 +77,7 @@ IPC_ENUM_TRAITS_MIN_MAX_VALUE(
content::AutoplayPolicy::kNoUserGestureRequired, content::AutoplayPolicy::kNoUserGestureRequired,
content::AutoplayPolicy::kDocumentUserActivationRequired) content::AutoplayPolicy::kDocumentUserActivationRequired)
IPC_ENUM_TRAITS_MIN_MAX_VALUE(blink::PreferredColorScheme, IPC_ENUM_TRAITS_MIN_MAX_VALUE(blink::PreferredColorScheme,
blink::PreferredColorScheme::kNoPreference, blink::PreferredColorScheme::kDark,
blink::PreferredColorScheme::kMaxValue) blink::PreferredColorScheme::kMaxValue)
IPC_STRUCT_TRAITS_BEGIN(blink::WebRect) IPC_STRUCT_TRAITS_BEGIN(blink::WebRect)
......
...@@ -223,7 +223,6 @@ WebPreferences::WebPreferences() ...@@ -223,7 +223,6 @@ WebPreferences::WebPreferences()
media_controls_enabled(true), media_controls_enabled(true),
do_not_update_selection_on_mutating_selection_range(false), do_not_update_selection_on_mutating_selection_range(false),
autoplay_policy(AutoplayPolicy::kDocumentUserActivationRequired), autoplay_policy(AutoplayPolicy::kDocumentUserActivationRequired),
preferred_color_scheme(blink::PreferredColorScheme::kNoPreference),
low_priority_iframes_threshold(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN), low_priority_iframes_threshold(net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN),
picture_in_picture_enabled(true), picture_in_picture_enabled(true),
translate_service_available(false), translate_service_available(false),
......
...@@ -319,7 +319,7 @@ struct CONTENT_EXPORT WebPreferences { ...@@ -319,7 +319,7 @@ struct CONTENT_EXPORT WebPreferences {
// evaluate the prefers-color-scheme media query and resolve UA color scheme // evaluate the prefers-color-scheme media query and resolve UA color scheme
// to be used based on the supported-color-schemes META tag and CSS property. // to be used based on the supported-color-schemes META tag and CSS property.
blink::PreferredColorScheme preferred_color_scheme = blink::PreferredColorScheme preferred_color_scheme =
blink::PreferredColorScheme::kNoPreference; blink::PreferredColorScheme::kLight;
// Network quality threshold below which resources from iframes are assigned // Network quality threshold below which resources from iframes are assigned
// either kVeryLow or kVeryLow Blink priority. // either kVeryLow or kVeryLow Blink priority.
......
...@@ -9,7 +9,6 @@ namespace blink { ...@@ -9,7 +9,6 @@ namespace blink {
// Use for passing preferred color scheme from the OS to the renderer. // Use for passing preferred color scheme from the OS to the renderer.
enum class PreferredColorScheme { enum class PreferredColorScheme {
kNoPreference,
kDark, kDark,
kLight, kLight,
kMaxValue = kLight, kMaxValue = kLight,
......
...@@ -829,14 +829,12 @@ static bool PrefersColorSchemeMediaFeatureEval( ...@@ -829,14 +829,12 @@ static bool PrefersColorSchemeMediaFeatureEval(
media_values.GetPreferredColorScheme(); media_values.GetPreferredColorScheme();
if (!value.IsValid()) if (!value.IsValid())
return preferred_scheme != PreferredColorScheme::kNoPreference; return true;
if (!value.is_id) if (!value.is_id)
return false; return false;
return (preferred_scheme == PreferredColorScheme::kNoPreference && return (preferred_scheme == PreferredColorScheme::kDark &&
value.id == CSSValueID::kNoPreference) ||
(preferred_scheme == PreferredColorScheme::kDark &&
value.id == CSSValueID::kDark) || value.id == CSSValueID::kDark) ||
(preferred_scheme == PreferredColorScheme::kLight && (preferred_scheme == PreferredColorScheme::kLight &&
value.id == CSSValueID::kLight); value.id == CSSValueID::kLight);
......
...@@ -76,10 +76,8 @@ static inline bool FeatureWithValidIdent(const String& media_feature, ...@@ -76,10 +76,8 @@ static inline bool FeatureWithValidIdent(const String& media_feature,
ident == CSSValueID::kRec2020; ident == CSSValueID::kRec2020;
} }
if (media_feature == media_feature_names::kPrefersColorSchemeMediaFeature) { if (media_feature == media_feature_names::kPrefersColorSchemeMediaFeature)
return ident == CSSValueID::kNoPreference || ident == CSSValueID::kDark || return ident == CSSValueID::kDark || ident == CSSValueID::kLight;
ident == CSSValueID::kLight;
}
if (media_feature == media_feature_names::kPrefersReducedMotionMediaFeature) if (media_feature == media_feature_names::kPrefersReducedMotionMediaFeature)
return ident == CSSValueID::kNoPreference || ident == CSSValueID::kReduce; return ident == CSSValueID::kNoPreference || ident == CSSValueID::kReduce;
......
...@@ -28,15 +28,13 @@ namespace blink { ...@@ -28,15 +28,13 @@ namespace blink {
PreferredColorScheme CSSValueIDToPreferredColorScheme(CSSValueID id) { PreferredColorScheme CSSValueIDToPreferredColorScheme(CSSValueID id) {
switch (id) { switch (id) {
case CSSValueID::kNoPreference:
return PreferredColorScheme::kNoPreference;
case CSSValueID::kLight: case CSSValueID::kLight:
return PreferredColorScheme::kLight; return PreferredColorScheme::kLight;
case CSSValueID::kDark: case CSSValueID::kDark:
return PreferredColorScheme::kDark; return PreferredColorScheme::kDark;
default: default:
NOTREACHED(); NOTREACHED();
return PreferredColorScheme::kNoPreference; return PreferredColorScheme::kLight;
} }
} }
......
...@@ -34,7 +34,7 @@ MediaValuesCached::MediaValuesCachedData::MediaValuesCachedData() ...@@ -34,7 +34,7 @@ MediaValuesCached::MediaValuesCachedData::MediaValuesCachedData()
strict_mode(true), strict_mode(true),
display_mode(blink::mojom::DisplayMode::kBrowser), display_mode(blink::mojom::DisplayMode::kBrowser),
color_gamut(ColorSpaceGamut::kUnknown), color_gamut(ColorSpaceGamut::kUnknown),
preferred_color_scheme(PreferredColorScheme::kNoPreference), preferred_color_scheme(PreferredColorScheme::kLight),
prefers_reduced_motion(false), prefers_reduced_motion(false),
forced_colors(ForcedColors::kNone), forced_colors(ForcedColors::kNone),
navigation_controls(NavigationControls::kNone), navigation_controls(NavigationControls::kNone),
......
...@@ -2120,7 +2120,7 @@ void StyleEngine::UpdateColorScheme() { ...@@ -2120,7 +2120,7 @@ void StyleEngine::UpdateColorScheme() {
if (!SupportsDarkColorScheme() && settings->GetForceDarkModeEnabled()) { if (!SupportsDarkColorScheme() && settings->GetForceDarkModeEnabled()) {
// Make sure we don't match (prefers-color-scheme: dark) when forced // Make sure we don't match (prefers-color-scheme: dark) when forced
// darkening is enabled. // darkening is enabled.
preferred_color_scheme_ = PreferredColorScheme::kNoPreference; preferred_color_scheme_ = PreferredColorScheme::kLight;
} }
if (GetDocument().Printing()) if (GetDocument().Printing())
preferred_color_scheme_ = PreferredColorScheme::kLight; preferred_color_scheme_ = PreferredColorScheme::kLight;
......
...@@ -606,9 +606,8 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected<StyleEngine>, ...@@ -606,9 +606,8 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected<StyleEngine>,
// The preferred color scheme is set in settings, but may be overridden by the // The preferred color scheme is set in settings, but may be overridden by the
// ForceDarkMode setting where the preferred_color_scheme_ will be set to // ForceDarkMode setting where the preferred_color_scheme_ will be set to
// kNoPreference to avoid dark styling to be applied before auto darkening. // kLight to avoid dark styling to be applied before auto darkening.
PreferredColorScheme preferred_color_scheme_ = PreferredColorScheme preferred_color_scheme_ = PreferredColorScheme::kLight;
PreferredColorScheme::kNoPreference;
bool use_dark_background_ = false; bool use_dark_background_ = false;
// Forced colors is set in WebThemeEngine. // Forced colors is set in WebThemeEngine.
......
...@@ -1519,7 +1519,7 @@ TEST_F(StyleEngineTest, MediaQueriesChangeColorSchemeForcedDarkMode) { ...@@ -1519,7 +1519,7 @@ TEST_F(StyleEngineTest, MediaQueriesChangeColorSchemeForcedDarkMode) {
GetDocument().body()->setInnerHTML(R"HTML( GetDocument().body()->setInnerHTML(R"HTML(
<style> <style>
@media (prefers-color-scheme: no-preference) { @media (prefers-color-scheme: light) {
body { color: green } body { color: green }
} }
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
...@@ -1637,14 +1637,6 @@ TEST_F(StyleEngineTest, MediaQueriesChangeForcedColorsAndPreferredColorScheme) { ...@@ -1637,14 +1637,6 @@ TEST_F(StyleEngineTest, MediaQueriesChangeForcedColorsAndPreferredColorScheme) {
GetDocument().body()->GetComputedStyle()->VisitedDependentColor( GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
GetCSSPropertyColor())); GetCSSPropertyColor()));
// ForcedColors = kActive, PreferredColorScheme = kNoPreference
color_scheme_helper.SetPreferredColorScheme(
PreferredColorScheme::kNoPreference);
UpdateAllLifecyclePhases();
EXPECT_EQ(MakeRGB(255, 255, 0),
GetDocument().body()->GetComputedStyle()->VisitedDependentColor(
GetCSSPropertyColor()));
// ForcedColors = kActive, PreferredColorScheme = kLight // ForcedColors = kActive, PreferredColorScheme = kLight
color_scheme_helper.SetPreferredColorScheme(PreferredColorScheme::kLight); color_scheme_helper.SetPreferredColorScheme(PreferredColorScheme::kLight);
UpdateAllLifecyclePhases(); UpdateAllLifecyclePhases();
......
...@@ -1057,7 +1057,7 @@ ...@@ -1057,7 +1057,7 @@
// evaluating the prefers-color-scheme media query. // evaluating the prefers-color-scheme media query.
{ {
name: "preferredColorScheme", name: "preferredColorScheme",
initial: "PreferredColorScheme::kNoPreference", initial: "PreferredColorScheme::kLight",
invalidate: "ColorScheme", invalidate: "ColorScheme",
type: "PreferredColorScheme", type: "PreferredColorScheme",
}, },
......
...@@ -33,7 +33,7 @@ class ColorSchemeHelper { ...@@ -33,7 +33,7 @@ class ColorSchemeHelper {
WebThemeEngine* web_theme_engine_ = nullptr; WebThemeEngine* web_theme_engine_ = nullptr;
Settings& settings_; Settings& settings_;
PreferredColorScheme default_preferred_color_scheme_ = PreferredColorScheme default_preferred_color_scheme_ =
PreferredColorScheme::kNoPreference; PreferredColorScheme::kLight;
ForcedColors default_forced_colors_ = ForcedColors::kNone; ForcedColors default_forced_colors_ = ForcedColors::kNone;
}; };
......
This is a testharness.js-based test.
PASS Should be parseable in a CSS stylesheet: '(prefers-color-scheme)'
PASS Should be parseable in a CSS stylesheet: '(prefers-color-scheme: light)'
PASS Should be parseable in a CSS stylesheet: '(prefers-color-scheme: dark)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: 0)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: none)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: 10px)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: dark 0)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: dark light)'
PASS Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: light/dark)'
FAIL Should not be parseable in a CSS stylesheet: '(prefers-color-scheme: no-preference)' assert_false: expected false got true
PASS Should be parseable in JS: '(prefers-color-scheme)'
PASS Should be parseable in JS: '(prefers-color-scheme: light)'
PASS Should be parseable in JS: '(prefers-color-scheme: dark)'
PASS Should not be parseable in JS: '(prefers-color-scheme: 0)'
PASS Should not be parseable in JS: '(prefers-color-scheme: none)'
PASS Should not be parseable in JS: '(prefers-color-scheme: 10px)'
PASS Should not be parseable in JS: '(prefers-color-scheme: dark 0)'
PASS Should not be parseable in JS: '(prefers-color-scheme: dark light)'
PASS Should not be parseable in JS: '(prefers-color-scheme: light/dark)'
FAIL Should not be parseable in JS: '(prefers-color-scheme: no-preference)' assert_false: expected false got true
PASS Check that prefer-color-scheme evaluates to true in the boolean context
Harness: the test ran to completion.
Tests that CSS media features can be overridden. Tests that CSS media features can be overridden.
matchMedia("(prefers-color-scheme: __invalid__)").matches: false matchMedia("(prefers-color-scheme: __invalid__)").matches: false
matchMedia("(prefers-color-scheme: __invalid__)").matches applied: 3px x 2px matchMedia("(prefers-color-scheme: __invalid__)").matches applied: 3px x 2px
matchMedia("(prefers-color-scheme: no-preference)").matches: true matchMedia("(prefers-color-scheme: no-preference)").matches: false
matchMedia("(prefers-color-scheme: no-preference)").matches applied: 2px x 2px matchMedia("(prefers-color-scheme: no-preference)").matches applied: 3px x 2px
matchMedia("(prefers-color-scheme: light)").matches: true matchMedia("(prefers-color-scheme: light)").matches: true
matchMedia("(prefers-color-scheme: light)").matches applied: 3px x 2px matchMedia("(prefers-color-scheme: light)").matches applied: 3px x 2px
matchMedia("(prefers-color-scheme: dark)").matches: true matchMedia("(prefers-color-scheme: dark)").matches: true
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment