summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-31 01:09:56 +0000
committermnaganov@chromium.org <mnaganov@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-31 01:09:56 +0000
commitd8b3bb420d803158b4020a9b88189decf60c3497 (patch)
tree52e99c896f3ce26acce1a5bc54e141f95f78ebcc
parent0784e881de49244307172fe579c6702c75ff7af5 (diff)
downloadchromium_src-d8b3bb420d803158b4020a9b88189decf60c3497.zip
chromium_src-d8b3bb420d803158b4020a9b88189decf60c3497.tar.gz
chromium_src-d8b3bb420d803158b4020a9b88189decf60c3497.tar.bz2
[Android WebView] Wire up Blink's UseLegacyBackgroundSizeShorthandBehavior setting
R=benm@chromium.org BUG=277157 TEST=AwSettingsTest#testUseLegacyBackgroundSizeShorthandBehavior Review URL: https://chromiumcodereview.appspot.com/23483005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220710 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwSettings.java8
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java30
-rw-r--r--android_webview/native/aw_settings.cc5
-rw-r--r--content/public/common/common_param_traits_macros.h1
-rw-r--r--content/renderer/web_preferences.cc2
-rw-r--r--webkit/common/webpreferences.cc1
-rw-r--r--webkit/common/webpreferences.h1
7 files changed, 42 insertions, 6 deletions
diff --git a/android_webview/java/src/org/chromium/android_webview/AwSettings.java b/android_webview/java/src/org/chromium/android_webview/AwSettings.java
index 0247ed4..deee0a597 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwSettings.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwSettings.java
@@ -82,7 +82,7 @@ public class AwSettings {
private String mDefaultVideoPosterURL;
private float mInitialPageScalePercent = 0;
- private final boolean mSupportDeprecatedTargetDensityDPI;
+ private final boolean mSupportLegacyQuirks;
private final boolean mPasswordEchoEnabled;
@@ -197,7 +197,7 @@ public class AwSettings {
mPasswordEchoEnabled = Settings.System.getInt(context.getContentResolver(),
Settings.System.TEXT_SHOW_PASSWORD, 1) == 1;
- mSupportDeprecatedTargetDensityDPI = supportsLegacyQuirks;
+ mSupportLegacyQuirks = supportsLegacyQuirks;
}
// Defer initializing the native side until a native WebContents instance is set.
}
@@ -1036,8 +1036,8 @@ public class AwSettings {
}
@CalledByNative
- private boolean getSupportDeprecatedTargetDensityDPILocked() {
- return mSupportDeprecatedTargetDensityDPI;
+ private boolean getSupportLegacyQuirksLocked() {
+ return mSupportLegacyQuirks;
}
/**
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
index d82af60..10acd47 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
@@ -2504,6 +2504,36 @@ public class AwSettingsTest extends AwTestBase {
}
}
+ @SmallTest
+ @Feature({"AndroidWebView", "Preferences"})
+ // background shorthand property must not override background-size when
+ // it's already set.
+ public void testUseLegacyBackgroundSizeShorthandBehavior() throws Throwable {
+ final TestAwContentsClient contentClient = new TestAwContentsClient();
+ final AwTestContainerView testContainerView =
+ createAwTestContainerViewOnMainSync(contentClient);
+ final AwContents awContents = testContainerView.getAwContents();
+ AwSettings settings = getAwSettingsOnUiThread(awContents);
+ CallbackHelper onPageFinishedHelper = contentClient.getOnPageFinishedHelper();
+ final String expectedBackgroundSize = "cover";
+ final String page = "<html><head>" +
+ "<script>" +
+ "function getBackgroundSize() {" +
+ " var e = document.getElementById('test'); " +
+ " e.style.backgroundSize = '" + expectedBackgroundSize + "';" +
+ " e.style.background = 'center red url(dummy://test.png) no-repeat border-box'; " +
+ " return e.style.backgroundSize; " +
+ "}" +
+ "</script></head>" +
+ "<body onload='document.title=getBackgroundSize()'>" +
+ " <div id='test'> </div>" +
+ "</body></html>";
+ settings.setJavaScriptEnabled(true);
+ loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
+ String actualBackgroundSize = getTitleOnUiThread(awContents);
+ assertEquals(expectedBackgroundSize, actualBackgroundSize);
+ }
+
static class ViewPair {
private final AwContents contents0;
private final TestAwContentsClient client0;
diff --git a/android_webview/native/aw_settings.cc b/android_webview/native/aw_settings.cc
index f47b20b..408eca0 100644
--- a/android_webview/native/aw_settings.cc
+++ b/android_webview/native/aw_settings.cc
@@ -203,8 +203,9 @@ void AwSettings::UpdateWebkitPreferencesLocked(JNIEnv* env, jobject obj) {
prefs.default_video_poster_url = url.obj() ?
GURL(ConvertJavaStringToUTF8(url)) : GURL();
- prefs.support_deprecated_target_density_dpi =
- Java_AwSettings_getSupportDeprecatedTargetDensityDPILocked(env, obj);
+ bool support_quirks = Java_AwSettings_getSupportLegacyQuirksLocked(env, obj);
+ prefs.support_deprecated_target_density_dpi = support_quirks;
+ prefs.use_legacy_background_size_shorthand_behavior = support_quirks;
prefs.password_echo_enabled =
Java_AwSettings_getPasswordEchoEnabled(env, obj);
diff --git a/content/public/common/common_param_traits_macros.h b/content/public/common/common_param_traits_macros.h
index 8dfab64..0504b74 100644
--- a/content/public/common/common_param_traits_macros.h
+++ b/content/public/common/common_param_traits_macros.h
@@ -202,6 +202,7 @@ IPC_STRUCT_TRAITS_BEGIN(WebPreferences)
IPC_STRUCT_TRAITS_MEMBER(user_gesture_required_for_media_playback)
IPC_STRUCT_TRAITS_MEMBER(default_video_poster_url)
IPC_STRUCT_TRAITS_MEMBER(support_deprecated_target_density_dpi)
+ IPC_STRUCT_TRAITS_MEMBER(use_legacy_background_size_shorthand_behavior)
IPC_STRUCT_TRAITS_MEMBER(use_wide_viewport)
#endif
IPC_STRUCT_TRAITS_END()
diff --git a/content/renderer/web_preferences.cc b/content/renderer/web_preferences.cc
index 2f2383f..76b7943 100644
--- a/content/renderer/web_preferences.cc
+++ b/content/renderer/web_preferences.cc
@@ -335,6 +335,8 @@ void ApplyWebPreferences(const WebPreferences& prefs, WebView* web_view) {
ASCIIToUTF16(prefs.default_video_poster_url.spec()));
settings->setSupportDeprecatedTargetDensityDPI(
prefs.support_deprecated_target_density_dpi);
+ settings->setUseLegacyBackgroundSizeShorthandBehavior(
+ prefs.use_legacy_background_size_shorthand_behavior);
settings->setUseWideViewport(prefs.use_wide_viewport);
#endif
diff --git a/webkit/common/webpreferences.cc b/webkit/common/webpreferences.cc
index 47bcc07..de32085 100644
--- a/webkit/common/webpreferences.cc
+++ b/webkit/common/webpreferences.cc
@@ -127,6 +127,7 @@ WebPreferences::WebPreferences()
double_tap_to_zoom_enabled(true),
user_gesture_required_for_media_playback(true),
support_deprecated_target_density_dpi(false),
+ use_legacy_background_size_shorthand_behavior(false),
use_wide_viewport(true)
#endif
{
diff --git a/webkit/common/webpreferences.h b/webkit/common/webpreferences.h
index b9285b2..a720855 100644
--- a/webkit/common/webpreferences.h
+++ b/webkit/common/webpreferences.h
@@ -170,6 +170,7 @@ struct WEBKIT_COMMON_EXPORT WebPreferences {
bool user_gesture_required_for_media_playback;
GURL default_video_poster_url;
bool support_deprecated_target_density_dpi;
+ bool use_legacy_background_size_shorthand_behavior;
bool use_wide_viewport;
#endif